服务器前几天运行了几个脚本,今天用 free -m 查看,发现内存就要跑满了,平时没有运行脚本起码有60%左右是闲置状态,先top,然后按下shift+m,也就是按内存占用百分比排序发现排在第一的进程,才占用5.0%,无奈内存不知道被谁吃了,只好Google一下。 Google:据说是Centos为了提高效率,把部分使用过的文件缓存到了内存里,而我运行的脚本又在不停的访问网页,读取文件,Centos又为了效率不停的把文件缓存到内存里,而且又不释放,所以就造成了内存慢慢被占满,我又不需要这样的文件性能,那就可以释放。 解决方案:释放内存 1、查看释放缓存参数 cat /proc/sys/vm/drop_caches 系统默认显示为0,0为默认值,即表示不释放。 2、将系统缓存区中的数据写入磁盘中: 包括已修改的i-node、已延迟的块I/O和读写映射文件 sync 3、修改释放缓存参数 echo 3 > /proc/sys/vm/drop_caches 4、不重启机器使配置改生效 sysctl -p
执行以上操作以后,神清气爽,内存又回到了平时的60%闲置状态。 |