常见性能计数器及分析
一、常見計數(shù)器
1、windows系統(tǒng)計數(shù)器
| 類別 | 計數(shù)器名稱 | 計數(shù)器描述 |
| Memory | Available Mbytes | 可用物理內(nèi)存數(shù) |
| Pages/sec | 表明由于硬件頁面錯誤而從磁盤取出的頁面數(shù),或由于頁面錯誤而寫入磁盤以釋放工作集空間的面數(shù) | |
| Pages Read/sec | 頁的硬故障,Pages/sec的子集,為了解析對內(nèi)存的引用,必須讀取頁文件的次數(shù)。其閾值為5,數(shù)值越低越好,大樹枝表示磁盤讀而不是緩存讀 | |
| Page Faults/sec | 此值為處理器中的頁面錯誤的計數(shù)。當(dāng)進(jìn)程引用特定的虛擬內(nèi)存頁,該頁不在其主內(nèi)存的工作集中,將出現(xiàn)頁面錯誤。如果某頁已經(jīng)位于主內(nèi)存中,或者它正在被共享該頁的其他進(jìn)程所使用,則頁面錯誤不會導(dǎo)致該頁從磁盤中讀取 | |
| Cache Bytes | 文件系統(tǒng)緩存,默認(rèn)情況下為50%的可用物理內(nèi)存 | |
| Process | %Processor Time | 被處理器消耗的處理器時間數(shù)量。如果專用于某種特定應(yīng)用,則可用應(yīng)用相關(guān)進(jìn)程的%Processor Time進(jìn)行衡量,此時可接受的上限一般不超過85% |
| Page Faults/sec | 將進(jìn)程產(chǎn)生的頁故障與系統(tǒng)產(chǎn)生的相比較,以判斷該進(jìn)程對系統(tǒng)頁故障產(chǎn)生的影響 | |
| Work Set | 處理線程最近使用的內(nèi)存頁,反映每一個進(jìn)程使用的內(nèi)存頁的數(shù)量。如果服務(wù)器有足夠的空閑內(nèi)存,頁就會被留在工作集中,當(dāng)自由內(nèi)存少于一個特定的閾值,頁就會被清除出工作集 | |
| Private Bytes | 此進(jìn)程所分配的無法與其他進(jìn)程共享的當(dāng)前字節(jié)數(shù)量。如果系統(tǒng)性能隨著時間而降低,則此計數(shù)器可以是內(nèi)存泄露的最佳指示器 | |
| Processor | %Processor Time | 如果該值持續(xù)超過95%,表明瓶頸是CPU,可以考慮增加一個處理器或換一個更快的處理器 |
| %User Time | 非內(nèi)核操作耗費的CPU時間。一般來說,如果系統(tǒng)中使用了大量的算法或復(fù)雜的計算操作,該值會比較大 | |
| %Pricileged Time | CPU內(nèi)核時間是在特權(quán)模式下處理線程執(zhí)行代碼所花時間的百分比 | |
| %DPC Time | CPU消耗在網(wǎng)絡(luò)處理上的時間,此值越低越好 | |
| Physical Disk | %Disk Time | 所選磁盤驅(qū)動器忙于為讀或?qū)懭胝埱筇峁┓?wù)所用時間的百分比 |
| Average Disk Queue Length | 讀取和寫入請求(所選磁盤在實例間隔中列隊)的平均數(shù)。該全值應(yīng)不超過磁盤數(shù)的1.5~2倍,要提高性能,可增加磁盤。(一個Raid Disk實際有多個磁盤) | |
| DiskReads(Writes)/sec | 物理磁盤上每秒磁盤讀、寫的次數(shù),兩者相加應(yīng)小于磁盤設(shè)備的最大容量 | |
| Average Disk sec/Read | 以秒計算的在磁盤上讀取數(shù)據(jù)所需的平均時間 | |
| Average Disk sec/Transfer | 以秒計算的在磁盤上寫入數(shù)據(jù)所需的平均時間 | |
| Network Interface | Bytes Total/sec | 為發(fā)送和接受字節(jié)的速率,包括幀字符在內(nèi)。判斷網(wǎng)絡(luò)連接速度是否是瓶頸,可以用該計數(shù)器的值和目前的寬帶比較 |
| System | %Total Processor Time | 系統(tǒng)上所有處理器都忙于執(zhí)行非空閑線程的平均時間百分比,反映了用于有用作業(yè)的時間比率。對單處理器系統(tǒng)來說,該值很容易理解;對于多服務(wù)器系統(tǒng)來說,該值體現(xiàn)了所有處理器的平均繁忙程度 |
| File Data Operations/sec | 計算機對文件系統(tǒng)設(shè)備執(zhí)行讀取和寫入操作的速率。本計數(shù)器的計數(shù)不包括文件控制操作 | |
| Processor Queue Length | 線程單元中的處理隊列的即時長度。所有處理器都是用單一隊列(線程在該隊列中等待處理器進(jìn)行循環(huán))。此長度不包括當(dāng)前正在執(zhí)行的線程,一般情況下,如果處理器隊列的長度一直超過服務(wù)器上可用處理器的總數(shù)量+1,則表示處理器可能堵塞 |
2、IIS應(yīng)用服務(wù)器計數(shù)器
| 類別 | 計數(shù)器名稱 | 計數(shù)器描述 |
| Processor | %Total Processor Time | 被處理器消耗的處理器時間數(shù)量,對于IIS應(yīng)用服務(wù)器來說,該值一般不應(yīng)超過85% |
| Physical Disk | %Disk Time | 顯示磁盤進(jìn)行讀/寫活動所花費的時間百分比 |
| Memory | Available Bytes | 可用的剩余物理內(nèi)存量。IIS基本占用2.5MB,每個附加連接將在此基礎(chǔ)上占用10KB左右 |
| Pool Paged Bytes and Pool Nonpaged Bytes | 緩沖池,由應(yīng)用程序和操作系統(tǒng)創(chuàng)建并使用的對象。如果池被填滿,可能發(fā)生內(nèi)存泄露 | |
| Pages/sec | 如果服務(wù)器沒有足夠的內(nèi)存處理其工作負(fù)荷,此數(shù)值將一直很高 | |
| Object | Threads | 線程是執(zhí)行處理器指令的基本可執(zhí)行實體,如果該值一直持續(xù)上升,請打開Process:Threads Count計數(shù)器并查看所有線程是由哪個實例創(chuàng)建的 |
| Process | Private Bytes Total | 顯示所有實例已經(jīng)分配但無法與其他進(jìn)程共享的當(dāng)前字節(jié)數(shù) |
1)Active Server Page計數(shù)器
重點需要關(guān)注超時的請求數(shù)、腳本運行時期的錯誤、隊列中的請求數(shù)、請求等待時間、請求總數(shù)、失敗的請求總數(shù)和送出的總字節(jié)數(shù)。
隊列中的請求數(shù)和請求等待時間直接反映應(yīng)用服務(wù)器的處理能力,如果隊列中的請求數(shù)數(shù)值處于一個比較高的水平,同時請求等待時間是一個比較大的值,則應(yīng)用服務(wù)器本身是瓶頸,需要解決。腳本運行時期的錯誤、請求總數(shù)、失敗的請求總數(shù)和送出的總字節(jié)數(shù)都可以與測試工具在測試過程中獲得的吞吐量、請求數(shù)等進(jìn)行對比,從而確定數(shù)據(jù)的可信度。
2)Web Service計數(shù)器
①Bytes Total/Sec:顯示W(wǎng)eb服務(wù)器發(fā)送和接收的總字節(jié)數(shù)。低數(shù)值表明該IIS正在以較低的速度進(jìn)行數(shù)據(jù)傳輸;
②Connection Refused:數(shù)值越低越好,高數(shù)值表明網(wǎng)絡(luò)適配器或處理器存在瓶頸;
③Not Found Errors:顯示由于被請求文件無法找到而無法由服務(wù)器滿足的請求數(shù)(http status=404)
3)dotNET計數(shù)器(略,查看官方文檔)
3、J2EE應(yīng)用服務(wù)器計數(shù)器
| 類別 | 計數(shù)器名稱 | 計數(shù)器描述 |
| JVM | Heap Size | JVM堆大小,該計數(shù)器的值是一個實時值 |
| Heap Free | JVM可用堆大小,該計數(shù)器的值是一個實時值 | |
| JDBC Connection Pool | Waiting For Connection Current Count | 等待的連接數(shù)量,如果該值持續(xù)較大,可能需要考慮增加應(yīng)用服務(wù)器的JDBC連接池大小 |
| Connections Total Count | 總的JDBC連接數(shù) | |
| Max Capacity | JDBC連接池的總?cè)萘俊?梢酝ㄟ^該計數(shù)器和上兩個計數(shù)器值的比較,獲得連接池設(shè)置是否合理的結(jié)論 | |
| Active ConnectionsCurrent Count | 當(dāng)前活躍的JDBC連接數(shù),分析該值可以知道JDBC連接的利用率是否合理 | |
| Execute Queue | Execute Thread Current Idle Count | 空閑的線程數(shù)量 |
| Pending Request Oldest Time | 隊列請求的最久時間。該值可以看到隊列有無明顯的擁塞情況 | |
| Serviced RequestTotal Count | 已處理的請求總數(shù)。該值可以用來和性能測試工具測試后得到的單擊數(shù)進(jìn)行對比 | |
| Pending Request Current Count | 掛起請求的數(shù)量 |
4、數(shù)據(jù)庫服務(wù)器計數(shù)器
| 類別 | 計數(shù)器名稱 | 計數(shù)器描述 |
| System | Total Processor Time | 數(shù)據(jù)庫進(jìn)程占用的CPU時間。不同的數(shù)據(jù)庫有不同的名稱,例在Oracle中被稱為cpu used by thisession |
| User Connections | 當(dāng)前用戶連接數(shù)。數(shù)據(jù)庫服務(wù)器一般都有用戶數(shù)連擊數(shù)的限制,應(yīng)用不合理時,有可能出現(xiàn)連接數(shù)超過限制的情況,導(dǎo)致一些異常的發(fā)生 | |
| Memory | Cache Hit Ratio | 緩存命中率。當(dāng)該值比較小,而數(shù)據(jù)庫比較繁忙時,可能需要調(diào)整緩存的大小 |
| Total Server Memory(僅適用于SQL Server) | 進(jìn)程當(dāng)前使用的內(nèi)存量。結(jié)合其他計數(shù)器(ConnectionMemory、Lock Memory等)可以很清楚知道Memory的使用情況 | |
| PGA Memory/UGA Memory(僅適用于Oracle) | Oracle數(shù)據(jù)庫進(jìn)程的內(nèi)存使用情況 | |
| Lock | Average Wait Time | 鎖平均等待時間 |
| Lock Requesets/sec | 每秒的鎖請求數(shù) | |
| Number of Deadlocks/sec | 每秒產(chǎn)生的死鎖數(shù)量,當(dāng)該值比較大時,需要查詢產(chǎn)生死鎖的原因 | |
| I/O | Outstanding Reads(Writes) | 被掛起的物理讀(寫),當(dāng)該值比較大時,可能是CPU、磁盤I/O產(chǎn)生了瓶頸,可以通過服務(wù)器的CPU和I/O進(jìn)一步分析原因 |
| Page Read/sec | 每秒頁面讀寫的次數(shù) | |
| Transactions/sec | 每秒產(chǎn)生的事務(wù)數(shù)量 |
二、分析方法(針對操作系統(tǒng))
1、內(nèi)存分析方法
1)查看MemoryAvailable Mbytes指標(biāo)
該值是描述系統(tǒng)可用內(nèi)存的直接指標(biāo),在對系統(tǒng)進(jìn)行操作系統(tǒng)級別的內(nèi)存分析時,首先通過該指標(biāo)建立一個初步的印象,了解系統(tǒng)是否有足夠的內(nèi)存可用。如果值比較小,系統(tǒng)可能出現(xiàn)內(nèi)存方面的問題,需要進(jìn)一步分析。
PS:在Unix/Linux系統(tǒng)中,對應(yīng)的指標(biāo)是Free(KB)。
2)注意Pages/sec、Pages Read/sec和Page Faults/sec的值
操作系統(tǒng)經(jīng)常會利用磁盤交換的方式提高系統(tǒng)可用的內(nèi)存量或內(nèi)存的使用效率,這三個指標(biāo)直接反映了操作系統(tǒng)進(jìn)行磁盤交換的頻度。如果Pages/sec的計數(shù)持續(xù)高于幾百?很可能會有內(nèi)存方面的問題產(chǎn)生,但值很大不一定表明內(nèi)存有問題,可能是運行使用內(nèi)存映射文件的程序所致。Pages Faults/sec值表示每秒發(fā)生頁面失效的次數(shù),頁面失效次數(shù)越多,說明操作系統(tǒng)向內(nèi)存中讀取的次數(shù)越多。此時還需要查看Pages Read/sec,此值閾值為5,如果計數(shù)值超過5,則可以判斷存在內(nèi)存方面的問題。
PS:在Unix/Linux系統(tǒng)中,對應(yīng)的指標(biāo)是(page)si和(page)so。
3)根據(jù)Physical Disk計數(shù)器的值分析性能瓶頸
如果Pages Read/sec很低,同時%Disk Time和Average Disk Queue Length的值很高,則可能有磁盤瓶頸。但是如果隊列長度增加的同時Pages Read/sec并未降低,則是由于內(nèi)存不足。
PS:在Unix/Linux系統(tǒng)中,對應(yīng)的指標(biāo)是Read(Writes)per sec、Percent of time the disk is busy和Average number of transactions waiting for service。
2、處理器分析方法
1)查看System\%Total Processor Time性能計數(shù)器的計數(shù)值
此值體現(xiàn)服務(wù)器整體的處理器利用率。對多處理系統(tǒng)而言,體現(xiàn)的是所有CPU的平均利用率。如果該值持續(xù)超過90%,則說明整個系統(tǒng)面臨著處理器方面的瓶頸,可以增加處理器來提高性能。在某些多CPU系統(tǒng)中,該數(shù)據(jù)本身并不大,但是CPU之間的負(fù)載狀態(tài)很不均衡,也可以視為系統(tǒng)產(chǎn)生了處理器方面的瓶頸。
2)查看每個CPU的Processor\%Processor Time、Processor\%User Time和Processor\%Privileged Time
如果Processor\%User Time值較大,可以考慮是否能通過算法優(yōu)化等方法優(yōu)化該值,如果服務(wù)器是數(shù)據(jù)庫,Processor\%User Time值打的原因很可能是數(shù)據(jù)庫的排序或是函數(shù)操作消耗了過多的CPU時間,此時可以考慮對數(shù)據(jù)庫系統(tǒng)進(jìn)行優(yōu)化。
3)研究系統(tǒng)處理器瓶頸
查看SystemProcessor Queue Length計數(shù)器的值,當(dāng)大于CPU總量+1時,說明產(chǎn)生了處理器堵塞,在處理器的%Process Time值很高時一般都伴隨著處理器堵塞。反之則不然,此時必須查找處理器堵塞的原因。
%DPC Time是另一個需要關(guān)注的,該計數(shù)值越低越好。在多處理器系統(tǒng)中,如果該值大于50%且Processor\%Processor Time值比較高,則考慮加一個網(wǎng)卡來提高性能。
3、磁盤I/O分析方法
1)計算每磁盤的I/O數(shù)
每磁盤的I/O數(shù)可用來與磁盤的I/O能力進(jìn)行對比,如果經(jīng)過計算得到的每磁盤的I/O數(shù)超過了磁盤標(biāo)稱的I/O能力,則說明確定存在磁盤的性能瓶頸。
| 每磁盤的I/O的計算方法 | |
| Raid類型 | 計算方法 |
| Raid0 | (Reads+Writes)/Number of Disks |
| Raid1 | (Read+2*Writes)/2 |
| Raid5 | (Read+4*Writes)/Number of Disks |
| Raid10 | (Read+2*Writes)/Number of Disks |
2)與ProcessorPrivileged Time組合進(jìn)行分析
如果在Physical Disk計數(shù)器中,只有%Disk Time值較大,其他值適中,則硬盤可能會是瓶頸。若幾個值都比較大,且數(shù)值持續(xù)超過80%,則可能是內(nèi)存泄露。
3)根據(jù)Disk sec/Transfer進(jìn)行分析
一般來說,定義Transfer數(shù)值小于15ms為優(yōu)秀,15~30ms之間為良好,30~60ms之間可以接受,超過60ms則需要考慮更換硬盤或者硬盤的Raid方式了。
4、進(jìn)程分析方法
1)查看進(jìn)程的%Processor Time值
該值反映進(jìn)程消耗的處理器時間。不同進(jìn)程進(jìn)行對比,可以輕易看出具體哪個進(jìn)程在測試過程中消耗了最多的處理器時間,從而據(jù)此針對應(yīng)用進(jìn)行優(yōu)化。
2)查看每個進(jìn)程產(chǎn)生的頁面失效
ProcessPage Failures/sec與MemoryPage Failures/sec的比值,判斷哪個進(jìn)程產(chǎn)生了最多的頁面失效,該進(jìn)程要么是需要大量內(nèi)存的進(jìn)程,要么是非常活躍的進(jìn)程,可以對其進(jìn)行重點分析。
3)了解進(jìn)程的ProcessPrivate Bytes
該值指進(jìn)程所分配的無法與其他進(jìn)程共享的當(dāng)前字節(jié)數(shù)量,主要用來判斷進(jìn)程在性能測試過程中有無內(nèi)存泄露。例如一個在IIS上的Web應(yīng)用,如果測試過程中,進(jìn)程的Private Bytes計數(shù)值不斷增加或是測試停止一段時間后,該值仍然持續(xù)在高水平,則說明應(yīng)用存在內(nèi)存泄露。
PS:在Unix/Linux系統(tǒng)中,對應(yīng)的指標(biāo)是Resident Size。
5、網(wǎng)絡(luò)分析方法
一般的公司都有專門的網(wǎng)絡(luò)管理人員,網(wǎng)絡(luò)分析是門技術(shù)活,此處僅描述Network InterfaceBytes Total/sec的值。Network InterfaceBytes Total/sec為發(fā)送和接收字節(jié)的速率(包括幀字符),可以通過該計數(shù)器的值和目前網(wǎng)絡(luò)的帶寬進(jìn)行比較來判斷網(wǎng)絡(luò)連接速度是否是瓶頸。
PS:在Unix/Linux系統(tǒng)中,可以參照Unix/Linux系統(tǒng)提供的snmp服務(wù)接口進(jìn)行網(wǎng)絡(luò)分析。
總結(jié)
以上是生活随笔為你收集整理的常见性能计数器及分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)NIOS II IDE 9.1(N
- 下一篇: 4K 分辨率 + 本地 AI:小米智能摄