一次關於swap占用問題的處理
阿新 • • 發佈:2018-05-13
swap最近工作中遇到這樣一個問題,記錄一下。
現象:
一臺機器swap報警,監控圖顯示swap使用率達到了75%左右,但查看內存使用率監控發現並不高,只有20%。
排查思路:
- 登錄機器使用free命令查看也是如此,說明監控本身沒有問題。
- 考慮把監控圖時間拉長,發現兩天前這臺機器的內存使用率有一個峰值,當時內存使用率達到了80%,同時swap使用率也隨之上升到了80%左右,接著內存使用率很快降下來,但是swap並沒有隨著內存空閑下來而相應下降,而是一直維持在75%左右。
解決:
在剩余內存大於swap占用空間的前提下,執行:
swapoff -a && swapon -a
該命令會將當前swap的內容重新導入內存。
調研:
- 為什麽在內存釋放後,swap不會自動釋放,在網上沒有找到很有說服力的解釋。
- 有一說free查看到的只是swap分配出去的空間,並不代表當前就在使用,可以執行vmstat命令查看si/so兩列確認當前是否正在使用swap,詳見鏈接。不過我想既然已分配,使用不使用就是隨時的事,還是直接釋放為好。
- 關於vm.swappiness內核參數,在3.5+內核以後0表示關閉swap,因此建議3.5+以後的內核將該參數最小設置為1,而不是0,除非確實想要關閉swap。(上一鏈接中也有說明)
- 更多關於swap的問題,可以參考Ubuntu的FAQ頁面。
一次關於swap占用問題的處理