Windows服務器常用的性能計數器


Windows常用性能計數器總結

基礎監控:


  1.SQL Server Buffer: Buffer Cache Hit Ratio

  這是一個很重要查看內存是否不足的參數。SQL Server Buffer中的計數器Buffer Cache Hit Ratio用來指出SQLServer從緩存中而不是磁盤中獲得數據的頻率。sqlserver會將某些查詢過的數據緩存在內存中用於以后再次查詢使用。當一個查詢A進來了以后數據庫會編譯這個sql看看需要哪些數據,然后執行計划首先去內存中找看是否有這次查詢所需要的數據,如果這個同樣的sql剛才已經執行過了或者該表的數據已經緩存在內存中,但是卻沒有在內存中找到數據,那就有可能是因為內存不足引起內存擠壓將緩存數據寫回硬盤或者釋放掉來提供數據庫其他請求來使用。一般來說oltp的系統,這個值最起碼也應該在90%以上,理想值是99%。如果這個值低於90%,那建議你應該添加內存了。

  2.Memory: Pages/sec

  這個也是監控內存是否不足的一個比較重要的參數。這個計數器記錄的是每秒鍾內存和磁盤之間交換的頁面數。頻繁的交換頁面就會消耗更多的io,這會影響到服務器的性能。打個比方,超市有一個貨架上邊擺滿了新進的各種商品a、b、c,當你去超市想買a的時候直接去貨架就能拿到a,方便的很,當顧客進超市逛一圈以后跟你說我怎么沒有發現舊商品d呢,我就想買這個d,然后工作人員就會去倉庫把商品d拿出來擺放到貨架上供下次顧客來買。但是貨架擺滿了怎么辦呢,只能將時間長沒有人問津的a下架放到倉庫然后空出來地方擺放d,但是下次另一個顧客來了又有想要購買a的意向,工作人員就得再次把a拿出來替換掉貨架上的d。其實內存就是這個貨架,硬盤就是倉庫。因為貨架太小了,導致只能頻繁的更換貨架上的商品來提供正常的運營,想減少反復來回搬運產生的io開銷,只能換個更大的貨架來滿足需求。

  如果服務器上只跑的sqlserver,那這個指標的理想范圍應該是0-20之間,偶爾超過20的話影響不大,如果這個值頻繁的超過20,那說明你的這台服務器可能需要加內存了。

當然這個指標要配合着上一個指標Buffer Cache Hit Ratio來看,如果上一個指標緩沖命中一直在99%或者更高,而這個期間內你的頁交換一直在20以上,那意味着不僅僅是內存不足,而且其他的程序占用了系統內存。

  3.Memory: Available Bytes

  另一個監控內存情況的計數器就是這個。這個值最少最少也得大於5M,因為sqlserver需要始終維持5-10m的自由內存用於分配,當這個值低於5m的時候,那sqlserver可能會因為缺少內存而產生性能瓶頸。

  4.Physical Disk: % Disk Time

  這個計數器記錄的是磁盤的繁忙程度(是整個磁盤陣列或者物理磁盤的繁忙程度)。理論上這個值應該低於55%,如果持續的高於55%,那說明這台服務器上可能有io瓶頸。

如果只是偶爾的出現幾次,那不必擔心,但是可以對應的找到這個時間點,數據庫正在干嘛執行了哪些語句,對應的優化一下。

  5.Physical Disk: Avg. Disk Queue Length

   這是一個比較重要的查看磁盤io情況的指標。理論上每個物理磁盤的值不應該超過2。當然這個值是需要計算的,比如用4塊物理盤做了個raid10,此時在一個監控周期內磁盤隊列的均值是10,那每塊磁盤的隊列值就是10/4=2.5,那么就可以說這個磁盤陣列存在i/o瓶頸了。這個跟之前的disktime指標一樣,偶爾出現不必擔心,如果長時間出現,那就得着手考慮解決磁盤的io性能問題了。

  6.Processor: % Processor Time

  這是監控cpu情況的一個指標(類似於disk time)。這個是觀察cpu利用率的一個關鍵參數。如果Processor Time計數器的值持續超過80%,說明cpu存在瓶頸問題。如果只是偶爾出現,那說明可能是這個時間點有個特別消耗cpu的查詢,可以在下一次這個時間點來臨的時候嘗試抓一下sql並且優化它。如果在某一個時間點以后cpu一直飆高,常見的情況就是:1.突然間的高並發2.索引重整3.突然一個經常使用的數據量特別大的索引失效了4.死鎖5.其他好多好多。先找到問題所在,在處理掉它。

  7.System: Processor Queue Length

  這個指標類似於disk queue length,也是算單個cpu的。單個cpu不能超過2,比如你是2u的機器,那這個值不應該超過4,如果在一個監控周期內持續性的超過4,那就可能出現cpu瓶頸了。

    8.Connections Established 當前連接數(Established + Close-Wait)
 
    9.Network Interface:Bytes Total/sec 網卡流量:發送+接收,字節

    10.% Free Space 邏輯分區可用空間,百分比(物理磁盤IO由於RAID級別不同,或者有的機器沒有RAID,無法定義統一的監控閾值)

==================================================

 

CPU:

%Processor Time

%Priviliaged Time
CPU在特權模式下處理線程所花的時間百分比。一般的系統服務,進城管理,內存管理等一些由操作系統自行啟動的進程屬於這類

%User Time
與%Privileged Time計數器正好相反,指的是在用戶狀態模式下(即非特權模式)的操作所花的時間百分比。如果該值較大,可以考慮是否通過算法優化等方法降低這個值。如果該服務器是數據庫服務器,導致此值較大的原因很可能是數據庫的排序或是函數操作消耗了過多的CPU時間,此時可以考慮對數據庫系統進行優化。

%DPC Time
處理器在網絡處理上消耗的時間,該值越低越好。在多處理器系統中,如果這個值大於50%並且%Processor Time非常高,加入一個網卡可能會提高性能。

 

Memory:

Available Bytes

另一個監控內存情況的計數器就是這個。這個值最少最少也得大於5M,因為sqlserver需要始終維持5-10m的自由內存用於分配,當這個值低於5m的時候,那sqlserver可能會因為缺少內存而產生性能瓶頸。

Pages/sec

該計數器顯示由於頁面不在物理內存中而需要從磁盤讀取的頁面數。Pages/sec 的值很大不一定表明內存有問題,而可能是運行使用內存映射文件的程序所致,操作系統經常會利用磁盤交換的方式提高系統可用的內存量或是提高內存的使用效率。(注意該計數器與 Page Faults/sec 的區別,后者只表明數據不能在內存的指定工作集中立即使用,包括硬錯誤和軟錯誤)

 

Page Faults/sec計數器可以確保磁盤活動不是由分頁導致的。在 Windows 中,換頁的原因包括:配置進程占用了過多內存 或者 文件系統活動。

如果在同一硬盤上有多個邏輯分區,需要使用 Logical Disk計數器而非 Physical Disk計數器。查看邏輯磁盤計數器有助於確定哪些文件被頻繁訪問。當發現磁盤有大量讀/寫活動時,請查看讀寫專用計數器以確定導致每個邏輯卷負荷增加的磁盤活動類型,例如,Logical Disk: Disk Write Bytes/sec。

 

Page Input/sec
表示為了解決硬錯誤而寫入硬盤的頁數(參考值:>=Page Reads/sec)


Page Reads/sec
表示為了解決硬錯誤而從硬盤上讀取的頁數。(參考值: <=5)

 

  如果懷疑有內存泄露,請監視 Memory/Available Bytes 和 Memory/ Committed Bytes,以觀察內存行為,並監視你認為可能在泄露內存的進程的 Process/ Private Bytes、Process/ Working Set 和Process/ Handle Count。如果懷疑是內核模式進程導致了泄露,則還應該監視 Memory/ Pool Nonpaged Bytes、Memory/ Pool Nonpaged Allocs 和 Process(process_name)/ Pool Nonpaged Bytes

  如果發生了內存泄漏,process\private bytes計數器和process\working set 計數器的值往往會升高,同時avaiable bytes的值會降低

 

private Bytes
是指進程所分配的無法與其他進程共享的當前字節數量。該計數器主要用來判斷進程在性能測試過程中有無內存泄漏。

例如:對於一個IIS之上的web應用,我們可以重點監控inetinfo進程的Private Bytes,如果在性能測試過程中,該進程的Private Bytes計數器值不斷增加,或是性能測試停止后一段時間,該進程的Private Bytes仍然持續在高水平,則說明應用存在內存泄漏。

 

 

Disk:

PhysicalDisk\Avg. Disk sec/Read

以秒計算的在此盤上讀取數據的所需平均時間。

 

Physical Disk\ Disk Reads/sec

在讀取操作時從磁盤上傳送的字節平均數。


PhysicalDisk\ Avg. Disk sec/Write

以秒計算的在此盤上寫入數據的所需平均時間。

 

Physical Disk\ DiskWrites/sec

在寫入操作時從磁盤上傳送的字節平均數。

 

Physical Disk\ Avg.Disk sec/Transfer

反映磁盤完成請求所用的時間。較高的值表明磁盤控制器由於失敗而不斷重試該磁盤。這些故障會增加平均磁盤傳送時間。

 

%Disk Time和Avg.Disk Queue Length

RAID 磁盤中的 % Disk Time 計數器會指示大於 100% 的值。如果出現這種情況,則使用 PhysicalDisk: Avg.Disk Queue Length計數器來確定等待進行磁盤訪問的平均系統請求數量。

如果不是RAID,則使用 % Disk Time 和 Current Disk Queue Length計數器確定是否磁盤存在瓶頸,如果這兩個計數器的值一直很高,則可能是磁盤存在瓶頸

 

Physical Disk:
DiskTransfers/sec 磁盤IOPS
% Disk Time 當前物理磁盤利用率,如果是RAID,該值會大於100%
Current Disk Queue Length 等待進行磁盤訪問的當前系統請求數量
Avg.Disk Queue Length 等待進行磁盤訪問的平均系統請求數量,用於RAID


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM