時間 | 恢復時間 | 狀態 | 信息 | 主機 | 問題 • 嚴重性 | 持續時間 | 確認 | 動作 | ||
---|---|---|---|---|---|---|---|---|---|---|
2019-03-21 20:29:30 | 09:51:30 | -ai-代理 | Lack of free swap space on ai-代理-73 |
監控顯示swap分區溢出,需要手動清理釋放swap分區占用的內存。
/proc/sys/vm/drop_caches 該配置文件記錄釋放緩存文件的記錄
0-不釋放
1-不釋放頁緩存
2-釋放dentries和inodes
3-釋放所有緩存
首先用sync指令,將所有未寫的系統緩沖區寫到磁盤中,包含已修改的inode,已延遲的塊I/O和讀寫映射文件,否則在釋放緩存的過程中,可能會丟失未保存的文件
接下來設置參數: echo 3 > /proc/sys/vm/drop_caches
cat /proc/sys/vm/drop_caches
若遇到 無法分配內存的情況:
[root@localhost /]# sudo swapoff -a
swapoff: /dev/dm-1: swapoff failed: Cannot allocate memory
查看哪個程序占用內存比較大的,將該程序重啟即恢復
通過查看知曉php-fpm 程序占用內存較大,將其重啟后內存占用情況即恢復。
swapon -s 查看swap分區的掛載點
然后swapoff /dev/dm-1 停掉swap分區,然后再進行打開
swapon -a
我們的swap分區內存已經成功釋放到了實際內存當中。
如果出現無法釋放掉swap占用的內存的情況下 可以通過如下方法解決
[root@localhost felix]# swapoff /dev/dm-1
swapoff: /dev/dm-1: swapoff failed: Cannot allocate memory
先用free -mh 查看內存占用情況
netstat -ntlup 查看哪些程序在運行
top命令查看內存占用較高的程序。
以我的例子來分析,得出,nginx和php程序占用的內存較多,
可以重啟下相關程序,釋放下緩存
service php-fpm restart
/usr/local/nginx/sbin/nginx -s reload
然后發現內存釋放掉了,