影響軟件應用性能的因素有很多,下面簡單介紹下其中幾種影響因素及分析方法。 ————參考書籍《軟件性能測試過程詳解與案例剖析》
有關於Windows和linux系統的性能計數器,大家可參考蟲師的博客:http://www.cnblogs.com/fnng/archive/2012/10/30/2747246.html
一、內存分析
內存的使用情況是系統性能中重要的因素之一,頻繁的頁交換及內存泄露都會影響到系統的性能(這里主要以Windows系統為主)。
內存分析用於判斷系統有無遇到內存瓶頸,是否需要通過增加內存等手段提高系統性能表現。
1、查看Memory\Available Mbytes指標
在對系統進行操作系統級別的內存分析時,首先需要通過該指標(Available Mbytes:Windows系統自帶計數器的一個計數值)建立一個初步的印象,了解性能測試過程中
系統是否仍然有足夠的內存可用。如果該指標比較小,系統可能存在內存不足方便的問題,這時需要繼續依據具體問題進行下一步分析。
2、注意Pages/sec、Pages Read/sec和Page Faults/sec的值
操作系統經常會利用磁盤交換方式提高系統的可用內存量或內存使用效率。Windows和Unix操作系統都提供了類似的方法來支持磁盤交換計數,而這三個指標直接反應了操作系統
進行磁盤交換的頻度。
如果Pages/sec的計數持續高於幾百,很可能有內存方面的問題產生,但Pages/sec的值很大不一定表明內存有問題,而可能是運行使用內存映射文件的程序所致。
Page Faults/sec值表示每秒發生的頁面失效次數,頁面失效次數越多,說明操作系統向內存讀取的次數越多。
Pages Read/sec的計數值閾值為5,如果計數值超過5,則可以判斷存在內存方面的問題。
3、根據Physical Disk計數器的值分析性能瓶頸
對Physical Disk計數器的分析包括對Pages Read/sec和%DiskTime及Average Disk Queue Length的分析。如果Pages Read/sec的值很低,同時%DiskTime和
Average Disk Queue Length的值很高,則可能是磁盤瓶頸;但如果隊列長度增加的同時Pages Read/sec並未降低,則是由於內存不足。
更詳細的內容可閱讀該鏈接:http://www.360doc.com/content/11/0822/11/7479922_142362096.shtml
二、處理器分析
處理器(CPU)也可能是系統的瓶頸,下面是針對處理器進行分析的步驟:
1、查看System\%Total Processor Time性能計數器的計數值
該計數值用於體現服務器整體的處理器利用率;對於多處理器系統而言,該計數值體現的是所有CPU的平均利用率。如果該數值持續超過90%,則說明整個系統面臨着處理器方面
的瓶頸,需要通過增加處理器來提高性能。
注意事項:由於操作系統本身的特性,在某些多CPU系統中,該數據本身並不大,但如果CPU之間負載狀況極不均衡,也應該視作系統產生了處理器方面的瓶頸。
2、查看每個CPU的Processor\%Processor Time、Processor\%User Time和Processor\%Privileged Time
Processor\%User Time是指系統非核心操作消耗的CPU時間;如果該值較大,可以考慮是否能通過算法優化等方法降低該值。
如果該服務器是數據庫服務器,Processor\%User Time值較大的原因很可能是數據庫的排序或者函數函數操作消耗了過多的CPU時間,此時可考慮對數據庫系統進行優化。
3、研究分析系統處理器瓶頸
查看System\Processor Queue Length計數器的值;當該計數器的值大於CPU數量總數+1時,說明產生了處理器阻塞。在處理器的%Process Time值很高時一般都伴隨
着處理器阻塞,但產生處理器阻塞時,Processor\%Process Time計數器的值並不一定很大,此時就需要查找處理器阻塞的原因。
%DPC Time的計數值越低越好。在多處理器系統中,如果該值大於50%並且Processor\%Processor Time值非常高,則考慮加一個網卡來提高性能。
三、磁盤I/O分析方法
磁盤I/O也是影響系統性能的一個關鍵因素。如果所分析的計數器指標來源於數據庫服務器、文件服務器或流媒體服務器,磁盤I/O更容易成為瓶頸。
磁盤I/O的分析方法如下:
1、計算每個磁盤的I/O數
每個磁盤的I/O數可以用來與磁盤的I/O能力進行對比,如果經過計算得到的每個磁盤I/O數超過了磁盤標稱的I/O能力,則說明確實存在磁盤的性能瓶頸。
下表給出了每個磁盤I/O的計算方法:
PS:各種不同的RAID方式,其每個磁盤I/O數的計算方法都不同。
2、與Processor\Privileged Time合並進行分析
如果在Physical Disk計數器中,只有%Disk Time值較大,其他值都比較適中,則硬盤可能會是瓶頸;若幾個值都比較大,且數值持續超過60%,則可能是內存泄漏。
3、根據Disk sec/Transfer進行分析
一般而言,定義Transfer數值小於15位優秀,介於15~30之間為良好,30~60毫秒之間為可以接受,超過60毫秒則需要考慮更換硬盤或硬盤的RAIN方式。
四、進程分析方法
1、查看進程的%Processor Time值
每個進程的%Processor Time值反映出進程所消耗的處理器時間。將不同進程所消耗的處理器時間進行對比,可以容易的看出具體哪個進程在性能測試過程中消耗了
最多的處理器時間,從而可以據此針對應用進行優化。
2、查看每個進程產生的頁面失效
可以用每個進程產生的頁面失效和系統的頁面失效來判斷哪個進程產生了最多的頁面失效;該進程要么是需要大量內存的進程,要么是非常活躍的進程,可對其重點分析。
進程產生的頁面失效:可以通過Process\Page Failures/sec計數器獲得;
系統的頁面失效:可以通過Memory\Page Failures/sec計數器獲得;
3、了解進程的Process\Private Bytes
Process\Private Bytes是指進程所分配的無法與其他進程共享的當前字節數量;其主要用來判斷進程在性能測試過程中有無內存泄漏。
五、網絡分析方法
隨着應用對數據傳輸量的增長,網絡有時也會成為系統性能的瓶頸;一般在企業中,網絡一般都是由專門的人員進行管理的(俗稱運維、網管)。
如果在測試過程中懷疑是網絡原因造成的系統瓶頸,可以要求網絡管理人員來協助進行網絡方面的監視檢測;其中Network Interface\Bytes Total/sec為比較重要的屬性;
Network Interface\Bytes Total/sec:發送和接受字節的速率;可以通過該值判斷網絡連接速度是否是瓶頸,具體操作方法是:用該計數器的值與目前網絡帶寬進行比較。
由於篇幅問題,稍后會不斷更新其他的影響系統應用的性能因素以及分析方法。。。