(一)是否存在一個伺服器性能基線? (1)、有了基線才有一個衡量的指標,否則一切計數器都是沒有意思。否則可能我的系統本來就很慢,例如現在公司就有一個OLAP系統,每天就花了三個小時產生一個報表。也不是問題。 (2)、有了基線才能確認我的伺服器確實存在調整的必要了,例如今天發佈新的代碼後,性能明顯偏離
(一)是否存在一個伺服器性能基線?
(1)、有了基線才有一個衡量的指標,否則一切計數器都是沒有意思。否則可能我的系統本來就很慢,例如現在公司就有一個OLAP系統,每天就花了三個小時產生一個報表。也不是問題。
(2)、有了基線才能確認我的伺服器確實存在調整的必要了,例如今天發佈新的代碼後,性能明顯偏離基線了,說明我的程式或者T-SQL代碼可能卻在缺陷。
(二)如何建立一個基線。
(1)、使用system perfmon收集性能計數器信息。
(2)、使用sys.dm_os_performance_counters DMV,可惜該DMV不包含一些OS級別的性能計數器。
(3)、根據前兩步的信息確定一個合理的基線。
(三)幾個重要計數器。
(1)、Memory:Pages/sec
這個計數器表示了每秒鐘記憶體和磁碟之間交換的頁面數,如果該值很高的話,可能預示你的伺服器可能存在記憶體壓力。可以考慮讓SQL動態的分配記憶體,不要設置SQL最大使用記憶體,如果該伺服器還運行其他消耗記憶體的程式可以考慮移除,或者增加很多的記憶體。一般該值推薦在0~20。
(2)、SQLServer:Buffer Manager:Buffer cache hit ratio
這個計數器表示SQLServer從緩存中而不是磁碟中獲得數據的概率,即緩存命中率。在一個OLTP程式中為了較好響應時間,該計數器值應該大於99%。否則也可能預示你的伺服器可能存在記憶體壓力,解決辦法同上。
(3)、PhysicalDisk :Avg. Disk Queue Length
這個計數器表示磁碟隊列長度,該值應該低於2,如果該計數器值很高,可能預示你的伺服器存在IO的壓力,應該增加IO子系統性能,配置更好的RAID,或者是更好的存儲。
(4)、System:Processor Queue Length
這個計數器表示CPU列長度,該值應該低於2,如果該計數器值很高,可能預示你的伺服器存在CPU的壓力,應該增加更多或者更強的CPU。或者減少伺服器的負載。
(5)、Processor:% Processor Time
這個計數器表示CPU的使用率,該值最好低於30%,不能高於80%,如果該值達到99%,可能伺服器就已經僵死了,應該產生一個警報通知DBA介入。解決該問題可以Processor Queue Length解決方法一樣。