时间 | 恢复时间 | 状态 | 信息 | 主机 | 问题 • 严重性 | 持续时间 | 确认 | 动作 | ||
---|---|---|---|---|---|---|---|---|---|---|
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
然后发现内存释放掉了,