Cacti 圖表顯示某日後 System\Processor Queue Length 和 sqlservr\%ProcessorTime 同時顯著上升,提示系統級壓力而非 SQL 內部查詢問題。
任務管理器 → 顯示所有用戶進程 → 按內存排序:svchost.exe 佔用 60GB+!
使用 Process Monitor (ProcMon) 或 Resource Monitor 關聯 svchost.exe PID,發現其承載服務為 Remote Registry (遠程註冊表)。
搜索關鍵詞 windows server 2008 r2 remote registry memory leak,命中微軟 KB:
KB2699780:在 Windows 7 / Server 2008 R2 上,遠程查詢性能計數器會導致本地 Remote Registry 服務內存持續增長,直至耗盡可用內存。
net stop "Remote Registry"
net start "Remote Registry"
服務重啟後,SQL Server Target Memory 迅速回升至 60GB+,CPU 歸於正常,PLE 穩步上升。
Target Server Memory (KB), Total Server Memory (KB), Page Life Expectancy, Available MBytes (系統可用內存)。部署監控 1 天后,發現另一台業務庫同樣出現 Target Memory 驟降、svchost 佔用高內存,同樣重啟 Remote Registry 服務恢復。驗證了監控體系的有效性。
| 計數器 | 健康基線 | 異常含義 |
|---|---|---|
| SQLServer:Memory Manager\Target Server Memory | 接近 Max Server Memory 設定值 | 被系統回收/擠壓,或配置過低 |
| SQLServer:Memory Manager\Total Server Memory | 接近 Target | 實際使用量,滯後於 Target |
| SQLServer:Buffer Manager\Page Life Expectancy | > 3000 (OLTP), > 300 (OLAP) | 頁面在緩存平均壽命,低表示內存壓力大 |
| SQLServer:Buffer Manager\Buffer Cache Hit Ratio | > 95% | 參考值,內存極小時會虛高 |
| Memory\Available MBytes | > 總內存 10% | 系統可用內存,低表示外部壓力 |
| Process(sqlservr)\Working Set | 穩定 | 進程工作集,被 Trim 時驟降 |