Linux
我的具有約 80GB 可用 RAM 的交換伺服器是否需要更多?
我正在管理一個 Debian Linux x86_64 伺服器,它有 125GB RAM、10GB 交換分區和 60 的交換值。
free -gw
輸出列印:total used free shared buffers cache available Mem: 125 20 1 25 0 103 78 Swap: 9 1 7
每天晚上,都會執行一個 cron 作業,該作業對磁碟 R/W 非常密集,並且在執行期間將使用的記憶體增加 2GB,然後返回到 ~20GB。
在同一時間範圍內,某些長期執行的容器化 Python 程序(尤其是 gunicorn)被分頁。
隨著時間的推移,這些程序將逐漸填滿交換空間——幾週後,交換空間將達到 99%。
swapoff
我可以通過重新啟動程序或使用and禁用和重新啟用來清除交換swapon
。但是 Python 程序的交換使用將再次緩慢上升。我想部分解釋可能是,由於每晚的 cron 作業,核心將文件系統記憶體的優先級高於 Python 程序。但我也猜想這些 Python 程序的記憶體處理中的一些軟體錯誤可能是罪魁禍首。
一位朋友建議我購買更多 RAM,以便為文件系統記憶體提供更多空間。這對我來說似乎太過分了。我想更準確地診斷交換的原因並找到一些解決問題的軟體。
所以現在我將問題傳遞給 Serverfault - 你如何看待這種現象,我應該從這裡去哪裡?
不,您不需要更多 RAM,也不需要執行
swapoff
/swapon
。這是正常行為,系統檢測到一些很少使用的記憶體頁面並將它們移動到交換,以便它可以將 RAM 用於更有用的東西,例如文件記憶體。