docker容器管理,OOM,内存溢出,dump文件堆栈信息分析
一、dump文件(.hprof)日志生成方式
1.方式一: order.jar 包运行时候加参数,当服务OOM的时候会自动导出dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=目录
- 方式二: 根据进程PID,手动导出进程文件
jmap -dump:live,format=b,file=m.hprof PID //在docker容器内执行
注意:因为docker容器管理导出的文件在容器中,需要保重容易与宿主机之间挂载有目录挂载,实现宿主机与容器之间实心文件共享docke容器与宿主机之间目录挂载
二、OOM时,dump文件分析
- 把文件从服务器上下载
-
使用dump文件分析工具MAT
-
看下要分析的.hprof文件的大小,修改mat/MemoryAnalyzer.ini中 -Xmx1024m的大小,爆保证修改之后的大小大于要分析的文件大小
-
点击MemoryAnalyzer.exe,出现工具界面
-
点击file/Open Heap Dump…,打开下载到本地的.hprof文件
-
打开之后,点击finish,分析过程比较慢需要一段时间。
8. 点击Leak suspects
9. 查看第一个占用内存大的问题的堆栈信息
10. 具体的堆栈信息,此信息跟idea和eclipse的控制台报错信息一致,可自己分析代码问题
- 也可以看问题详情
12,具体信息