1. 程式人生 > >一次關於swap占用問題的處理

一次關於swap占用問題的處理

swap

最近工作中遇到這樣一個問題,記錄一下。

現象:

一臺機器swap報警,監控圖顯示swap使用率達到了75%左右,但查看內存使用率監控發現並不高,只有20%。

排查思路:

  1. 登錄機器使用free命令查看也是如此,說明監控本身沒有問題。
  2. 考慮把監控圖時間拉長,發現兩天前這臺機器的內存使用率有一個峰值,當時內存使用率達到了80%,同時swap使用率也隨之上升到了80%左右,接著內存使用率很快降下來,但是swap並沒有隨著內存空閑下來而相應下降,而是一直維持在75%左右。

解決:

在剩余內存大於swap占用空間的前提下,執行:

swapoff -a && swapon -a

該命令會將當前swap的內容重新導入內存。

調研:

  1. 為什麽在內存釋放後,swap不會自動釋放,在網上沒有找到很有說服力的解釋。
  2. 有一說free查看到的只是swap分配出去的空間,並不代表當前就在使用,可以執行vmstat命令查看si/so兩列確認當前是否正在使用swap,詳見鏈接。不過我想既然已分配,使用不使用就是隨時的事,還是直接釋放為好。
  3. 關於vm.swappiness內核參數,在3.5+內核以後0表示關閉swap,因此建議3.5+以後的內核將該參數最小設置為1,而不是0,除非確實想要關閉swap。(上一鏈接中也有說明)
  4. 更多關於swap的問題,可以參考Ubuntu的FAQ頁面。

一次關於swap占用問題的處理