OOM排查流程
2023-01-14 本文已影响0人
修行者12138
假设线上发生了OOM,应急流程如下
步骤1,把实例从服务发现中摘除。
步骤2,jps -v,查看所有java进程,同时打印jvm启动参数。
获取到java进程pid,并且观察启动参数是否配置了OOM时自动dump内存快照。
# OOM时自动dump内存快照
-XX:+HeapDumpOnOutOfMemoryError
# 内存快照存储目录
-XX:HeapDumpPath=/usr/local/app/oom
步骤3,如果未配置自动dump内存快照,或者dump内存快照失败,需要手动dump,命令如下
jmap -dump:format=b,file=/springboot.hprof 替换为自己的PID
步骤4,把hprof文件下载到本地,打开ecplipse的mat(memory analyzer tool)工具,解析hprof文件。
如果file下有open heap dump的选项,直接选择hprof文件打开即可,否则,需要设置*.hprof默认关联mat工具

选择leak suspects report

点击see stacktrace,可以看到报错的具体行


点击details>copy>save value to file,可以把对象的值导出到文件,如果文件过大,可以使用visual studio code打开。

