基線 sql server 性能應該監控什麼
監視 SQL Server 的基準性能計數器是什麼?它們的含義是什麼?
以下是我監控的計數器及其原因(請參閱 perfmon 中的說明按鈕以獲取有關它們作用的詳細說明)。請注意,除非您有要衡量的基線,否則其中許多計數器都是無用的。您必須在應用程序出現性能問題之前對其進行監控。
程序對象:% 處理器時間 - 如果您有增長並且此計數器平均為 80%,則該升級了。平均 75-80% 是充分利用的伺服器。持續的峰值,尤其是在使用者連接率低的情況下,可能意味著查詢編寫不當,或者可能意味著是時候進行升級了,讓某人查看程式碼當然更好。
系統對象:處理器隊列長度 - 此值應小於系統中 CPU 數量的 2 倍。如果它正在增長並且 CPU %(以上)為 80%+,那麼您可能需要更多或更快的處理器
Memory Object:Pages/sec - 通常,添加記憶體(或分配更多記憶體給 SQL)應該會降低此計數器。此計數器本身並不能指示性能問題。這個計數器是主觀的。可以說明的是,如果隨著時間的推移,性能上升而性能下降,那麼肯定是時候為 sql server 分配更多的記憶體了。作為一個非常普遍的規則,假設 sql server 是盒子上唯一的應用程序,這個數字應該在 24 小時內平均為 0(有峰值)。從性能的角度來看,低於 20 應該不會被真正注意到,超過 20 並且您可能需要更多的 ram
記憶體對象:可用 MBytes - 尋找隨時間的一致性 - 不是一個神奇的數字,理論上的完美世界將盡可能接近 0
物理磁碟對象:平均。磁碟隊列長度 - 一個好的經驗法則是不高於主軸數 X 2,這個數字是主觀的
PhysicalDisk Object:% Idle Time - 使用這個 - 100,更準確地查看 %disk 時間(這是我的舊筆記,在 widows 2008 下,這可能已修復,但 2000 和 2003 存在一些問題)如果您正在調整您想知道讀取與寫入的比率 - 這只是基本性能
網路介面對象:字節總數/秒 - 您正在這裡尋找網路問題。如果它異常低(比如在 20% 範圍內)並且您的負載不錯,請查看網路配置,同樣如果它超過 60%,您可能有錯誤配置或網路瓶頸。60% 應該是大約 3000 批請求/秒
SQL Server 訪問方法對象:Full Scans/Sec - 如果您看到許多這些 SQL Server 索引沒有被使用,請找到 sql 開發人員並帶上一個蝙蝠(使用木頭,因為鋁製的容易凹陷),請注意這是相對的到基線,因為並非所有查詢都可以使用索引 - 但當然值得讓開發人員看看是否有任何額外的索引可以完成
SQL Server Database Object:Transactions/Sec - 使用它來告訴伺服器的平均使用率,這將隨著性能下降而上升(注意 SQLServer:SQL Statistics: Batch Requests/Sec 更準確,但是我發現TPS 更有用)
SQL Server 緩衝區管理器對象:緩衝區記憶體命中率 - 正如您所猜測的那樣,越高越好,更多的 ram 應該(但不一定)增加這個
SQL Server 一般統計對象:使用者連接 - 更多地用於趨勢而不是實際性能,基於 Java 的應用程序通常會將其提升到 1000,因為它連接到 sql server 的方式
SQL Server Locks Object:Average Wait Time - 再次是主觀的,隨著時間的推移表明性能趨勢/問題,但是這對於個別問題也很好(例如為什麼這個報告執行這麼慢),如果這個峰值讓開發人員查看背後的程式碼那個特定的報告。它可能只是創建了很多鎖,或者可能需要調整(所以這次把球棒留在你的桌子上)