一年前我写过一个linux系统下内存泄漏问题定位方法的帖子《内存泄漏定位思路和方法》。这是我工作中总结出来的,帮助定位了很多项目内存泄漏问题。
后来有同事反应,文章步骤较多,需要熟悉相关系统命令。项目上遇到问题后,再安装步骤逐步排查效率较低。询问是否可以做一个内存泄漏快速定位工具出来。
于是我抽时间用shell将内存泄漏定位工具写了出来。在问题设备上进行了验证,可以准确提示泄漏位置。
工具链接:内存泄漏快速定位工具
该工具适合运维/技术支持/研发/测试等在工作中会遇到内存泄漏的相关人员。工具操作非常简单,直接运行即可。运行后会对内存进行综合分析,然后返回问题原因,并给出相关提示。基本上根据结果内容就能马上知道内存问题原因。
以下是几个示例:
-
正常情况
为了定位准确,工具只在内存占用高于80%(内存告警阈值)时开始分析。低于80%时,系统内存相对充裕,不进行分析。
如需调整内存告警阈值,可修改脚本中的 MEM_THRESHOLD,默认是80%。
-
用户进程buagent内存占用过高导致内存不足
buagent进程占用了663M内存,导致系统内存不足,kill掉该进程后,内存占用恢复正常。
-
vim进程占用内存过高导致内存不足
使用vim命令打开一个超大的log文件,内存消耗过大(超过2G),导致内存不足。
-
内核slab memcache占用过高导致内存不足
内核slab 占用过高,从列出的前5个slab可以看到,已经占用了超过1.5G内存。分析发现是业务模块占用内存过高。需要修改参数调整。
欢迎大家下载使用,并提供反馈。