问题描述:
最近,公司的开发服务器总是偶尔有一些java服务莫名其妙的停掉。通过排查发现是内存不足,奇怪的是,内存只是用了一半,但是可用的却只有不到1G(峰值时估计更少)。下面是具体的内存使用信息:
可以看到,可用的内存只有888M,内存共有62G,罪魁祸首就是这个buff/cache占用了27G。
产生原因:
Linux操作系统频繁存取文件会导致内存被用光,即便是程序结束后也不会被正常释放,这就会导致buffers和cached占用过高。
解决方法:
用下面的命令来释放缓存
1 | sync |
执行完命令后,free -h 查看内存,发现可用内存已经达到27G,buff/cache也被释放。
这样只是暂时解决问题,我们可以写一个脚本配合定时任务来定时检查清除缓存:
1 |
|
最后,只需将脚本加入定时任务,即可!