首页 > 技术文章 > 手工释放服务器的swap分区缓存

Enzoo 2019-03-22 10:14 原文

时间  恢复时间状态信息主机问题 • 严重性持续时间确认动作
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

然后发现内存释放掉了,

 

推荐阅读