从docker 中抓取jvm heap 信息, 并且分析

1, 查看JVM进程

# jps
-----------------------------
11921 WrapperSimpleApp
4082 Jps
9768 QuorumPeerMain
10363 Bootstrap

直接使用 jsp 命令, 会发现, 在top 命令中 很多的java 进程并不存在,

#top
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND      
20884 root      20   0 6087220   1.5g   3540 S   5.3  9.8  51:02.64 java  

我们直接使用

# jmap -dump:live,format=b,file=heap.hprof 20884

---------------------------------
20884: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding

会告诉我们 jvm 无法加载, 怎么办呢?

1.1 进入 docker 使用 jps
# docker exec -it 容器id /bin/bash
# jps
---------------------------------
1 hello.jar
718 Jps

再使用dump

jmap -dump:live,format=b,file=/heap.hprof [pid]

# jmap -dump:live,format=b,file=/heap.hprof 1
--------------
Dumping heap to /heap.hprof ...
Heap dump file created

提示创建成功!

2, 分析

先把文件从docker 中 拷贝出来, 这个地方要注意, 换成你自己的hprof 文件所在目录

# docker cp 容器id:/app/dump/ /app/home/dump 

# /app/dump/ 是hprof 文件所在的目录
# /app/home/dump  是主机目录
2.1 命令行分析
# jhat heap.hprof 
Reading from heap.hprof...
Dump file created Fri Oct 30 09:14:16 CST 2020
Snapshot read, resolving...

会创建一个 端口为 7000 的 html 页面, 访问即可分析

2.2 jdk 界面分析

想办法搞远程下载下来

jvisualvm.exe

打开 heap.hprof 文件即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值