56

关于内存泄露的一场虚惊

 5 years ago
source link: http://blog.guoyb.com/2018/06/16/linux-mem/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近有个前段时间做好的服务要放量,所以我上监控平台看了下机器的负载,结果吓了一跳。所有机器的内存使用率都呈现类似这样的曲线:

aqq2UfV.png!web

内存泄露了?吓尿……

看图示,60天大概增长了1GB的样子。

于是我赶紧ssh连到对应的机器,top看下进程的具体负载,MEM使用率只有0.6%。这是台16GB内存的服务器,也就是说服务进程只占到了100M左右内存。

那剩下的接近5GB的内存去哪儿了?

用free -m查看当前内存使用分布,used有5GB左右,free+cached有14.4GB,free+cache+buffers有15GB。而used减去buffers和cache仅有700MB。

Nj6VJj6.png!web

经组内牛牛同事指点,原来,Linux为了加速文件的读写,会使用内存做cache。这部分内存只有等到系统需要使用内存时,系统才会释放,而目前这台服务器的内存只使用掉16GB中的5GB,因此就暂时没有释放。我们的服务正好有比较持续的读写文件操作,因此随着服务的启动时间越来越长,内存消耗曲线就一路飙升了。

这里的buffers和cached内存也可以手动进行释放,具体操作如下所示:

AN3Anqr.png!web

OK,最后总结一下。free命令查看内存使用情况时,以第二行 -/+ buffers/cache 为准哈。

虚惊一场,可以愉快的放量了。

转载请注明出处: http://blog.guoyb.com/2018/06/16/linux-mem/

欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考:

b6niUzu.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK