摘要

问题发生在周末,正在家休息突然接收到告警信息提示linux内存使用率超过90%,刚接收到信息以为是程序发生了内存泄漏。登录Linux通过top命令发现系统占用内存正常。各进程内存使用率都很低

使用命令:free -h 查看内存使用情况

命令:free  -h

下图为已经清理后的可以看到used使用了1.8GB,当时告警used为6.3GB而且还在持续增长中

 使用:通过释放 文件缓存,手动释放缓存的方法

命令:echo 3 > /proc/sys/vm/drop_caches   

 used的内存并没有被释放,当时依旧是6.3GB

参考:https://blog.csdn.net/u011236069/article/details/122924687
 

思路一:

因为当时Linux上只部署了一个应用,因此内存使用率定位是应用服务内存泄露导致。

命令:top -o %MEM

可以看到java应用占用的内存还是正常的。也就是说还有其他环节在占用内存

思路二:

于是找小组其他同学沟通内存使用率告警,可能是由我们在Linux上的探活脚本导致

命令:ps -ef | grep live

 当时进程大约有几十个相关

循环清理命令

命令:kill -9 `ps -ef| grep live |awk '{print $2}' `

清理后释放大约1GB内存

思路三:脚本执行占用内存,tail等日志查看命令是否会产生内存?

命令1:ps -ef |grep tail  发现有上千此tail调用

命令2批量删除:kill -9 `ps -ef| grep tail |awk '{print $2}' `

命令3:free -m   查看清理结果used降到518MB  内存释放结束,程序正常启动

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐