Solaris

當我在 Solaris 10 中仍有大量可用記憶體時,為什麼會出現與交換空間相關的錯誤?

  • April 15, 2010

我看到我的一些服務因“分配記憶體錯誤”或“無法創建新程序”等錯誤而遭受/崩潰。

我對此有點困惑,因為日誌顯示當時系統有大量可用記憶體(在一種情況下約為 26GB)可用記憶體,並且沒有以任何其他方式特別強調。

在註意到帶有類似錯誤的 JVM 崩潰並添加了“交換空間不足?”的查詢之後。它讓我更深入地探勘。

事實證明,有人為我們的區域配置了一個 2GB 的交換文件。我們的區域沒有記憶體上限,目前可以根據需要訪問 128GB 的​​ RAM。我們的 SA 計劃在有機會時將其上限設置為 32GB。

我目前的想法是,雖然有足夠的記憶體供作業系統分配,但交換空間似乎嚴重不足(基於此處的其他答案)。似乎 Solaris 想要確保有足夠的交換空間以防萬一必須換出(即它正在保留交換空間)。

這種想法是正確的,還是有其他原因導致我在大量可用記憶體和看似過小的交換空間時出現記憶體分配錯誤?

與其他一些實現令人討厭的記憶體不足殺手或等效的作業系統不同,Solaris 不會過度使用記憶體(除非您使用非常特定的分配技術)。當進行正常記憶體分配時,作業系統會確保該記憶體在需要時可用(即預留)。缺點是您需要有足夠的虛擬記憶體空間來儲存這個可能部分未使用的記憶體。

可用 RAM 無關緊要,但它也佔虛擬記憶體大小。

出現問題時查看“swap -s”輸出。

請注意,您可以通過添加交換文件或設備輕鬆增加交換區域。

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