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