Linux

我的具有約 80GB 可用 RAM 的交換伺服器是否需要更多?

  • February 2, 2022

我正在管理一個 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 用於更有用的東西,例如文件記憶體。

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