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