Windows

帶 SQL Server 的性能監視器 - 多少計數器太多?

  • October 7, 2010

我正在使用內置的 Windows 性能監視器在通用硬體和 SQL Server 上進行一些性能分析。我一直在閱讀很多關於使用哪些性能計數器的資訊。特別是這個關於等待和隊列方法的文件很棒。

但是,它推薦了非常多的計數器,我擔心如果我有太多計數器,那麼要麼我的生產伺服器會崩潰,要麼結果會過於傾斜而無法獲得準確的讀數。

我對生成或收集這些統計數據的實際情況知之甚少——它們通常會給系統增加什麼樣的負載?我知道,答案是“這取決於”,取決於硬體和目前負載,但總的來說,我想知道是否就多少個肯定太多達成共識 - 一次 20、50、100 或更多?

編輯:如果它是相關的,我目前配置了 41 個計數器:

\Memory\Page Faults/sec
\Memory\Pages/sec
\PhysicalDisk(_Total)\% Disk Time
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Disk Reads/sec
\PhysicalDisk(_Total)\Disk Writes/sec
\Process(sqlservr)\% Privileged Time
\Process(sqlservr)\% Processor Time
\Process(sqlservr)\% User Time
\Process(sqlservr)\Page Faults/sec
\Processor(_Total)\% Processor Time
\Processor(_Total)\Interrupts/sec
\System\Processor Queue Length
\SQLServer:Access Methods\Full Scans/sec
\SQLServer:Access Methods\Index Searches/sec
\SQLServer:Access Methods\Page Splits/sec
\SQLServer:Buffer Manager\Buffer cache hit ratio
\SQLServer:Buffer Manager\Checkpoint pages/sec
\SQLServer:Buffer Manager\Lazy writes/sec
\SQLServer:Buffer Manager\Page life expectancy
\SQLServer:Buffer Manager\Page reads/sec
\SQLServer:Buffer Manager\Page writes/sec
\SQLServer:Databases(_Total)\Log Flush Wait Time
\SQLServer:Databases(_Total)\Log Flush Waits/sec
\SQLServer:Databases(_Total)\Transactions/sec
\SQLServer:General Statistics\User Connections
\SQLServer:Latches\Average Latch Wait Time (ms)
\SQLServer:Latches\Latch Waits/sec
\SQLServer:Locks\Average Wait Time (ms)
\SQLServer:Locks(_Total)\Lock Wait Time (ms)
\SQLServer:Locks(_Total)\Lock Waits/sec
\SQLServer:Memory Manager\Memory Grants Pending
\SQLServer:Memory Manager\Memory Grants Outstanding
\SQLServer:Memory Manager\Target Server Memory (KB)
\SQLServer:Memory Manager\Total Server Memory (KB)
\SQLServer:Plan Cache\Cache Hit Ratio
\SQLServer:SQL Statistics\SQL Compilations/sec
\SQLServer:SQL Statistics\SQL Re-Compilations/sec
\SQLServer:SQL Statistics\Batch Requests/sec
\SQLServer:SQL Statistics\Auto-Param Attempts/sec
\SQLServer:SQL Statistics\Failed Auto-Params/sec

我不能給你一個神奇的數字,但是我可以告訴你性能計數器的成本非常非常低。資訊已經存在,Microsoft 完全打算讓您使用和收集它們。機器不必特意去生成它們,它所做的就是捕捉它們,而不是讓它們滑過,如果你選擇添加它們。我可以告訴你,我們的生產機器上有 75 個,負載沒有任何差異。

除非您每秒擷取 1000 個計數器,否則我認為您不會在伺服器上看到性能下降。我的建議:專注於你將如何使用它們。

我在 Excel 中分析我的跟踪結果,所以我總是保存為 CSV 格式,並確保我擷取的計數器少於 255 個(由於 Excel 中的列限制)。

您可能需要一些時間來確定哪些計數器對您有用,但是一旦您這樣做了,擷取額外的列對您沒有任何好處。例如,我曾經擷取所有 PhysicalDisk 計數器,直到我了解到對我最有用的是 Avg Disk Sec/Read、Avg Disk Sec/Write(用於測量延遲)和 Disk Reads/sec、Disk Writes /sec(衡量物理 IO 操作,這是我的 SAN 團隊關心的衡量標準)。

採樣間隔的類似方法。我在尋找一天或一周的趨勢嗎?在這種情況下,我只會每 3 到 5 分鐘採樣一次,因為更多時候我會嘗試刪除數據以製作可用的圖表。我是否希望在問題發生的那一刻發現問題?然後我將每 15 秒到 1 分鐘採樣一次。

引用自:https://serverfault.com/questions/188460