最近有个前段时间做好的服务要放量,所以我上监控平台看了下机器的负载,结果吓了一跳。所有机器的内存使用率都呈现类似这样的曲线:
于是我赶紧ssh连到对应的机器,top看下进程的具体负载,MEM使用率只有0.6%。这是台16GB内存的服务器,也就是说服务进程只占到了100M左右内存。
那剩下的接近5GB的内存去哪儿了?
用free -m查看当前内存使用分布,used有5GB左右,free+cached有14.4GB,free+cache+buffers有15GB。而used减去buffers和cache仅有700MB。
经组内牛牛同事指点,原来,Linux为了加速文件的读写,会使用内存做cache。这部分内存只有等到系统需要使用内存时,系统才会释放,而目前这台服务器的内存只使用掉16GB中的5GB,因此就暂时没有释放。我们的服务正好有比较持续的读写文件操作,因此随着服务的启动时间越来越长,内存消耗曲线就一路飙升了。
这里的buffers和cached内存也可以手动进行释放,具体操作如下所示:
OK,最后总结一下。free命令查看内存使用情况时,以第二行 -/+ buffers/cache 为准哈。
虚惊一场,可以愉快的放量了。
推荐阅读:
使用双buffer无锁化
不要拷贝
Vim中的查找替换
转载请注明出处: blog.guoyb.com/2018/06/16/…