1、記憶體分析法
記憶體分析用于判斷系統有無記憶體瓶頸,是否需要通過增加記憶體等手段提高系統性能表現。
記憶體分析需要使用的計數器:Memory類别和Physical Disk類别的計數器。記憶體分析的主要方法和步驟:
(1)首先檢視Memory\Available Mbytes名額
如果該名額的資料比較小,系統可能出現了記憶體方面的問題,需要繼續下面步驟進一步分析。
注: 在UNIX/LINUX中,對應名額是FREE(KB)
(2)注意Pages/sec、Pages Read/sec和Page Faults/sec的值
作業系統回利用磁盤較好的方式提高系統可用記憶體量或者提高記憶體的使用效率。這三個名額直接反應了作業系統進行磁盤交換的頻度。
如果Pages/sec的技術持續高于幾百,可能有記憶體問題。Pages/sec值不一定大就表明有記憶體問題,可能是運作使用記憶體映射檔案的程式所緻。Page Faults/sec說明每秒發生頁面失效次數,頁面失效次數越多,說明作業系統向記憶體讀取的次數越多。此事需要檢視Pages Read/sec的計數值,該計數器的閥值為5,如果計數值超過5,則可以判斷存在記憶體方面的問題。
注:在UNIX/LINUX系統中,對于名額是(page)si和(page)so.
(3)根據Physical Disk計數器的值分析性能瓶頸
對Physical Disk計數器的分析包括對Page Reads/sec和%Disk Time及Aerage Disk Queue Length的分析。如果Pages Read/sec很低,同時%Disk Time和Average Disk Queue Length的值很高,則可能有磁盤瓶頸。但是,如果隊列長度增加的同時Pages Read/sec并未降低,則是記憶體不足。
注:在 UNIX/LINUX系統中,對應的名額是Reads(Writes)per sec、Percent of time the disk is busy和Average number of transactions waiting for service.
2、處理器分析法
(1)首先看System\%Total Processor Time 性能計數器的計數值
該計數器的值展現伺服器整體處理器使用率,對多處理器的系統而言,該計數器提醒所有CPU的平均使用率。如果該值持續超過90%,則說明整個系統面臨着處理器方面的瓶頸,需要通過增加處理器來提高性能。
注:多處理器系統中,該資料本身不大,但PUT直接負載狀況極不均衡,也應該視作系統産生處理器方面瓶頸。
(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 計數器的值并不一定很大,此時就必須查找處理器阻塞的原因。
%DOC Time 是另一個需要關注的内容,該計數器越低越好。在多處理器系統中,如果這個值大于50%,并且Processor\%Precessor Time非常高,加入一個網卡可能回提高性能。
3、磁盤I/O分析法
(1)計算梅磁盤的I/O數
梅磁盤的I/O數可用來與磁盤的I/O能力進行對比,如果經過計算得到的每磁盤I/O數超過了磁盤标稱的I/O能力,則說明确實存在磁盤的性能瓶頸。
每磁盤I/O計算方法
RAID0計算方法:(Reads +Writes)/Number of Disks
RAID0計算方法:(Reads +2*Writes)/2
RAID0計算方法:[Reads +(4*Writes)]/Number of Disks
RAID0計算方法:[Reads +(2*Writes)]/Number of Disks
(2)與Processor\Privileged Time 合并進行分析
如果在Physical Disk 計數器中,隻有%Disk Time 比較大,其他值都比較适中,硬碟可能會是瓶頸。若幾個值都比較大,且數值持續超過80%,則可能是記憶體洩漏。
(3)根據Disk sec/Transfer進行分析
一般來說,定義該數值小于15ms為Excellent,介于15~30ms之間為良好,30~60ms之間為可以接受,超過60ms則需要考慮更換硬碟或是硬碟的RAID方式了。
4、程序分析法
(1)檢視程序的%Processor Time值
每個程序的%Processor Time反映程序所消耗的處理器時間。用不同程序所消耗的處理器時間進行對比,可以看出具體哪個程序在性能測試過程中消耗了最多的處理器時間,進而可以據此針對應用進行優化。
(2)檢視每個程序産生的頁面失效
可以用每個程序産生的頁面失效(通過PRCESS\PAGE FAILURES/SEC計數器獲得)和系統頁面失效(可以通過MEMORY\PAGE FAILURES/SEC計數器獲得)的比值,來判斷哪個程序産生了最多的頁面失效,這個程序要麼是需要大量記憶體的程序,要麼是非常活躍的程序,可以對其進行重點分析。
(3)了解程序的Process/Private Bytes
Process/Private Bytes是指程序所配置設定的無法與其他程序共享的目前位元組數量。該計數器主要用來判斷程序在性能測試過程中有無記憶體洩漏。例如:對于一個IIS之上的 WEB應用,我們可以重點監控inetinfo程序的Private Bytes,如果在性能測試過程中,該程序的Private Bytes計數器值不斷增加,或是性能測試停止後一段時間,該程序的Private Bytes仍然持續在高水準,則說明應用存在記憶體洩漏。
注:在UNIX/LINUX系統中,對應的名額是Resident Size
5、網絡分析法
Network Interface\Bytes Total/sec為發送和接收位元組的速率,可以通過該計數器值來判斷網絡連結速度是否是瓶頸,具體操作方法是用該計數器的值和目前網絡的帶寬進行比較。

注:轉載需注明出處及作者。