查看Buffer&Cache被哪些进程占用

背景介绍

根据运营反馈线上环境监控图表Response Time出现了波动,由于我之前处理过类似的情况,上次是由于Redis占用大量内存没有释放的问题导致的,所以这次我也从内存着手进行分析问题的原因。

(虽然最后确定导致此问题的原因是Java代码中的问题,但对于cache内容被那些进程所占用的,仍然记得被记录。)

参考资料

https://github.com/silenceshell/hcache?tab=readme-ov-file

具体步骤

查看内存使用情况

登录到服务器上free -h查看内存情况

发现cache了很多内存资源,并且swap已经开始使用了。

想要知道是那些程序使用了这么多的cache。

查看cache top

通过hcache工具查看具体是那些进程使用了这么多的cache


通过hcache工具可以看到是某Java程序使用了大量cache。

还可以通过-pid 参数查看具体进程占用了多少内存cache。

释放cache内存

最后记录下释放内存cache的命令

#释放完内存后改回去让系统重新自动分配内存 
echo 0 > /proc/sys/vm/drop_caches
#释放页缓存 
echo 1 > /proc/sys/vm/drop_caches
#释放所有缓存
echo 3 > /proc/sys/vm/drop_caches
posted @ 2024-01-17 15:28  热气球!  阅读(464)  评论(0编辑  收藏  举报