Windows-Server-2008

SQL Server 達到 99% 記憶體使用率時性能不佳

  • October 7, 2020

我有一台伺服器報告 8 GB 的記憶體已用完 99%。重新啟動 Sql Server 時,它的使用率下降到大約 5%,但在大約 2 小時內逐漸恢復到 99%。

當我查看 sqlserver 程序時,它報告為僅使用 100k 記憶體,並且通常不會大幅上升或低於該數字。事實上,如果我將我的 TaskManager 中的所有程序加起來,它幾乎不會觸及我總可用程序的表面(但 TaskManager 仍然顯示 99% 的記憶體使用率並顯示“顯示所有程序”)。

似乎 Sql Server 發生了巨大的記憶體洩漏,但它沒有報告它。伺服器已經執行了將近兩年,這只是在最近 3-4 週內才開始顯現出來。

任何人都看過這個或對這個問題有任何見解?

編輯

當伺服器達到 99% 時,性能下降。對伺服器、應用程序等的所有查詢都會爬網。重新啟動服務會使事情再次變得輕鬆,直到 2 小時過去,伺服器再次達到 99%。

SQL 伺服器將盡可能多地記憶體數據——正如其他人所說的那樣,這是一件好事。它正在記憶體的這些數據稱為緩衝區記憶體——但您需要對此加以限制。

因此,您需要做的是限制緩衝區高速記憶體的大小。經驗法則是 (Total_RAM - (2GB 或 10% (以較大者為準)) = 最大緩衝區記憶體。如果您不限制此記憶體的大小,那麼隨著作業系統和 SQL 開始競爭,伺服器可能會開始遇到記憶體壓力用於記憶體。您可以在管理工作室的 SQL 伺服器屬性的記憶體部分下找到此設置:

在此處輸入圖像描述

請查看第二部分 Brent Ozar 的 SQL Server 部署清單中的記憶體最佳實踐,以了解有關此內容的更多詳細資訊。

由於這種情況最近開始發生,我的猜測是有人通過安裝或執行另一個軟體來製造與 SQL Server 的記憶體競爭。

最後,如果您想查看 SQL Server 實際用於緩衝池的記憶體量,請查看SQL Server Memory Manager: Total Server Memoryperfmon 計數器。這是緩衝池正在使用的記憶體量(不是伺服器總記憶體)。Taskman 不會顯示此記憶體。

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