背景介绍
根据运营反馈线上环境监控图表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
标签:释放,Cache,查看,Buffer,占用,cache,内存,proc
From: https://www.cnblogs.com/liushiya/p/17970132