暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OOM-内存溢出时,导出docker容器中服务的dump文件

3985

  Dump文件是进程的内存镜像,可以把程序的执行状态通过调试器保存到dump文件中。主要是用来在系统中出现异常或者崩溃的时候来生成dump文件,然后用调试器进行调试,这样就可以把生产环境中的dmp文件拷贝到自己的开发机上,调试就可以找到程序出错的位置。

1、查看正在运行的容器id

docker ps

2、拿到容器id,进入容器

docker exec -it CONTAINER_ID /bin/bash

或 docker exec -it CONTAINER_ID /bin/sh(上一个命令报错的情况下尝试)

3、在容器内查询进程

ps -ef|grep java

4、生成dump文件(文件名前可以加路径)

jmap -dump:live,format=b,file=m.hprof PID

文件名(m.hprof)

5. JDK1.8以下,使用jdk自带的jvisualvm.exe程序来查看内存溢出文件,在bin目录下

JDK1.8以上,不再集成,可从从官网下载独立版https://visualvm.github.io/index.html,或者安装JDK1.8版本

6. top命令,top是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

7. 点击file/Open Heap Dump…,打开下载到本地的.hprof文件,打开之后,点击finish,分析过程比较慢需要一段时间。

8. 点击Leak suspects

9. 查看第一个占用内存大的问题的堆栈信息

10. 具体的堆栈信息,此信息跟idea和eclipse的控制台报错信息一致,可自己分析代码问题,也可以看问题详情

文章转载自琢磨先生DataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论