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 等待進行磁盤訪問的平均系統請求數量,用於RAIDweb