虛擬伺服器上的 SQL Server 2008 Workgroup Edition,無交換
我從 Hosteurope 租用了 4 GB 記憶體的虛擬伺服器,包括 SQL Server 2008 Workgroup Edition 的許可證。它工作正常並且速度非常快,但是每當我對其施加一些負載時,它就會耗盡記憶體,結果伺服器會崩潰。
應該提到的是,Hosteurope 為其虛擬伺服器提供了一個系統,該系統不允許在伺服器上使用交換。這就是為什麼沒有頁面文件,當它記憶體不足時,它就完全耗盡了。
Hosteurope 拒絕提供幫助或承擔任何責任,但我真的希望 serverfault 的人可以幫助我。
我已經嘗試將 SQL Server 中的“最大伺服器記憶體”設置為 2000,但沒有任何區別。
問題症狀 數據庫伺服器停止接受連接。
建立與 SQL Server 的連接時發生與網路相關或特定於實例的錯誤。伺服器未找到或無法訪問。驗證實例名稱是否正確以及 SQL Server 是否配置為允許遠端連接。(提供者:命名管道提供者,錯誤:40 - 無法打開與 SQL Server 的連接)
- 重新啟動 SQL Server 伺服器並不能解決問題。
- 重新啟動 Web 伺服器並不能解決問題。
- 重新啟動安裝了 SQL Server 的完整伺服器可以解決問題。
…直到下一次有一點負載,然後它再次停止工作。
所以現在我懇請您:
- 幫助弄清楚我如何找到導致這種行為的確切錯誤。我查看了系統和應用程序的事件日誌,但都沒有顯示任何結論。
- 幫助弄清楚如何配置我的 server/sql server 安裝,使其不會崩潰。
主要解決方案 如果您希望載入負載,請不要在禁用交換/頁面文件的 Windows Server 上執行 SQL Server。這意味著,如果您希望將負載放在您的數據庫伺服器上,請不要選擇 HostEurope 作為您的主機!
次要解決方案 通過限制 SQL Server 上的並行工作人員數量來提高可靠性,如下面接受的答案中所述。
我有來自 Host Europe 的完全相同的虛擬伺服器以及同樣的問題。我想我已經找到了解決辦法。
在我看來,伺服器上的並行性導致了這個問題。虛擬伺服器有 24 個虛擬 CPU,這對於 4 GB 的 RAM 來說太多了。我對 SQL 實例的配置進行了以下更改(我有一個德語系統,我不知道英語 SQL-Server 的確切文本):
- 在 Management Studio 中打開實例的屬性。
- 轉到“高級”選項卡。
- 將最大並行度的選項從 0 更改為 2。
- 在記憶體選項卡上,將伺服器的最大記憶體更改為 1792 MB。
這似乎解決了我的問題。