Sql-Server
在相同的主機記憶體壓力上執行 MongoDB 和 SQL Server
我們有一個新的應用程序,它同時使用傳統的 MS SQL 和 MongoDB 進行數據儲存。我們在同一台具有 64GB RAM 的 Windows 2008R2 x64 機器上執行這兩個實例。
我已經開始調查一些關於性能不佳的軼事報告。
我可以看到 SQL Server 消耗的記憶體沒有我預期的那麼多,並且顯示出記憶體壓力的跡象。
例如。
AppDomain 16 (mssqlsystemresource.dbo[runtime].15) is marked for unload due to memory pressure
相比之下,MongoDB 正在使用一個巨大的工作集,這是基於文件的預期行為
它依賴於 Windows 來管理記憶體使用。
似乎 SQL 伺服器無法或沒有請求使用 Mongo 工作集中的任何記憶體,這會影響性能。伺服器目前處於非常低的負載狀態。
- 頁面預期壽命似乎很高:1536
- 和緩衝區記憶體命中率:404002
- 空閒列表檔位/秒:695
- 免費頁面:26529
有沒有人遇到過這個問題?在這種情況下 SQL 伺服器的預期行為是什麼?我正在考慮使用
min server memory
配置選項。
設置
min server memory
SQL Server 的選項。它仍然會在記憶體壓力下釋放頁面,除非您還允許 SQL Server 將頁面鎖定在記憶體中。在記憶體中設置min server memory
和鎖定頁面的組合應該可以解決問題。我從來沒有用過MongoDB,所以我不知道你是否可以管理記憶體使用。快速搜尋使您似乎無法做到。
假設您正在執行 64 位伺服器,並且有超過 4 GB 的 RAM,您可以執行 32 位 MongoDB 實例,這將根據其架構將記憶體限制為 2、3 或 4GB。32 位 MongoDB 是否存在?
在 SSMS 中右鍵點擊您的伺服器,選擇屬性。
轉到記憶體選項卡並將最小伺服器記憶體設置為某個合理的值。
由於 mongo 餓死 SQL Server,我們遇到了性能問題,導致它經常交換到磁碟。然後我們將最小值設置為 8GB(超過 32GB),並且在一分鐘內它開始變得更好。