您好,登錄后才能下訂單哦!
軟件測試: 瓶頸分析方法
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 為發送和接收字節的速率,可以通過該計數器值來判斷網絡鏈接速度是否是瓶頸,具體操作方法是用該計數器的值和目前網絡的帶寬進行比較。
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 方式了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。