一、遇到的问题
服务器CPU占用飙升报警,后发现内存爆满,程序停止后依然有大半内存释放不掉
二、查看哪部分内存没释放,使用vmstat命令
# vmstat 2
观察到cache的内存无法释放,考虑手工释放cache内存
三、手工释放cache内存
1、首先,/proc/sys/vm/drop_caches的值,默认为0。
# cat /proc/sys/vm/drop_caches 02、手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
# sync3、将/proc/sys/vm/drop_caches值设为3
# echo 3 > /proc/sys/vm/drop_caches # cat /proc/sys/vm/drop_caches 3四、问题解决
再来运行free命令,或vmstat命令发下内存已成功释放。