?

淺析應用程序性能分析與優化

2019-12-05 02:43夏衛虎
科技風 2019年31期
關鍵詞:性能優化性能分析運維管理

摘?要:性能是一種典型的非功能性需求,然而又貫穿在信息化項目的實際使用中,直接影響系統運行效率和用戶體驗。也正是由于這一特性,性能無法簡單地通過單一的、直線式的思維來度量和管理,注定需要以系統工程的方法來掌握和調整。

關鍵詞:性能分析;性能優化;運維管理

隨著信息化基礎設施的完善,企業為提高自身獲取和處理信息能力,越來越多地選擇把企業原有的工作流數據集成到業務系統中去。自2005年以來,國內企業進行了大規模的信息化建設,越來越多的企業定制開發屬于自己的信息系統并逐步投入使用。但隨著系統越建越多,信息系統的性能問題成為擺在運維管理人員面前的大問題。為什么有些應用程序經??D,為什么業務網站又無法訪問,運維管理人員怎樣才能找到哪個邏輯更慢,怎么樣才能做到優化改善,對于性能優化而言,最大的挑戰是性能分析。本文作者通過總結多年信息化基礎設施和信息系統運維管理經驗,從以下五個維度分析提煉出影響應用程序性能的五個方面:

一、應用程序

性能調整盡可能接近完成工作的地方:它們在應用程序中是最好的。大多數情況下,一個應用程序都包括負載均衡設備、應用服務器、文件服務器、數據庫服務器等。應用程序的內部可能很復雜,有很多可能的代碼路徑和行為。應用程序源代碼一般是萬行級,操作系統內核則上至百萬行級。應用程序性能分析包括了配置應用程序實現系統資源最佳利用、歸納應用程序使用系統的方式,以及常見問題的分析。由于應用程序設計不合理。一旦運行,會頻繁觸發大量的內存/硬盤交換異常,占用大量的CPU時鐘周期,導致無法響應客戶端連接訪問需求。一個能有效提高應用程序性能的方法是找到對應生產環境工作負載的公用代碼路徑,并開始對其做優化。如果應用程序需要經常與CPU交互,那么意味著代碼路徑會頻繁占用CPU。如果應用程序需要經常從硬盤等外設讀取數據,則應該查看導致頻繁I/O的代碼路徑。這些都能通過分析和剖析應用程序來確定。

二、CPU資源

CPU是服務器硬件的核心,是系統性能分析的主要目標之一,微軟、VMware等操作系統廠商會經常發布針對 CPU 類型對應用程序進行優化的建議?,F代系統一般有多顆CPU,通過內核調度器共享給所有運行軟件,當需求的CPU資源超過了系統力所能及的范圍時,進程里的任務就會排隊,等待輪詢運行的機會,等待給應用程序的運行帶來延時,使得性能下降。應用程序在CPU的運行時間可以通過編譯器選項如字長設置來大幅改進。編譯器也頻繁地更新以利用最新的CPU指令集以及其他優化,有時應用程序性能可以通過使用新的編譯器顯著地提高。實際的診斷過程,運維管理人員可以通過仔細檢查CPU的用量,尋找性能改進的空間,去除一些不需要的負載。

三、物理內存

物理內存是存儲操作系統內核指令和應用程序的地方。除了緩存,在很多系統中,這些數據的二次存儲的主要存儲設備是磁盤,磁盤在處理大數量級數據方面的速度遠低于物理內存。一旦物理內存被填滿,系統將在內存和磁盤之間交換數據,這個相對緩慢的過程經常成為系統瓶頸,進而成為影響程序性能的重要因素。實際的應用程序分析需要檢查影響系統性能的因素包括分配內存和釋放內存、復制內存和管理內存地址空間映射的CPU開銷。對于多處理器架構系統來說,內存的布局也是一個影響因素,因為連接到本地CPU的內存的延遲時間比遠程CPU訪問要低很多。

四、文件系統和磁盤

服務器數據存儲包括邏輯組織和物理實現兩大部分。邏輯組織即文件系統能夠在各種不同的設備上組織和存儲信息,協調所有的訪問操作,確保操作的高效執行且不會相互干擾,物理實現即磁盤則是文件系統操作的底層硬件設備。文件系統使用緩存、緩沖和異步I/O來減輕磁盤延遲對應用程序的影響。磁盤是應用程序加載的來源,在高負載下,如果沒有提前規劃,很容易成為瓶頸,CPU持續空閑以等待磁盤I/O結束。發現并消除這些瓶頸能讓性能和應用程序吞吐量明顯提升,可以通過使用動態跟蹤技術,包括操作系統附帶或第三方工具(Dtrace)等,檢查文件系統和磁盤關鍵指標如隨機連續比例、讀寫比、命中率、磁盤響應時間等。

五、網絡資源

隨著應用系統訪問人員的快速增長,應用程序也向著越來越分布化的方向演化,尤其在云計算環境中,網絡在性能方面扮演著的角色越來越重要。除了改進網絡延時和吞吐量,另一個常見的任務是消除可能由丟包引起的延時異常。如DNS 域名解析時間太長可以通過瀏覽器DNS緩存和DNS預加載解決,TCP每次都要建立三次握手,可以通過TCP長鏈接,預鏈接等措施處理。HTTP層面的優化可以分為 減少HTTP請求提及和 減少HTTP請求次數等方面優化。

工欲善其事,必先利其器。針對應用程序性能優化,最大的挑戰是性能分析,性能問題在復雜的軟件中通常由多個因素造成,而性能分析要求運維管理人員深入了解應用程序、設備硬件以及網絡的性能,明確每個環節執行時間的先后順序,并做出合理的判斷,即真正的任務不是尋找問題,而是辨別問題或者說是辨別哪些問題是最重要的。只有充分理解系統性能指標并找到適當的工具來分析可能的瓶頸,才能明晰影響系統性能各個要素,做出合理的判斷,進而運用系統工程的方法來掌握和調整。應用程序性能優化的方案則需要構建在操作系統的深刻理解上,甚至構建在統計學和統計實驗基礎上。

參考文獻:

[1]Brendan Gregg.性能之巔 洞悉系統、企業與云計算[M].電子工業出版社,2015.

[2]譚志彬,柳純錄,周立新,盧光明.信息系統項目管理師教程[M].清華大學出版社,2017.

作者簡介:夏衛虎,男,本科,網絡工程師,主要研究方向:網絡、虛擬化、存儲。

猜你喜歡
性能優化性能分析運維管理
自動控制系統的優劣評價分析
SQL Server數據庫性能優化的幾點分析
Web應用的前端性能優化
網絡安全態勢量化評估模型
網絡安全態勢感知國內外研究現狀
Oracle數據庫性能調整與優化分析
DCS控制系統在生產線物料運輸工作的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合