java 线程转储_【Java】线程转储分析 ThreadDump

[[TOC]]

通过分析 ThreadDump 来查询Java程序运行情况

获取线程转储文件

下面介绍 jps+jstack的方式获取 ThreadDumps

步骤1:查看当前虚拟机所有进程

jps -l

output如下:

46832 com.chinamobile.epic.MgmtApplication

16900 org.jetbrains.idea.maven.server.RemoteMavenServer

38980 sun.tools.jps.Jps

43828 org.jetbrains.jps.cmdline.Launcher

9544

其中 ++46832 com.chinamobile.epic.MgmtApplication++ 为将要分析的程序程序;

步骤2:使用jstack获取转储文件

指令:

jstack -l >

example: 得到转储文件 threaddump-46832.txt

jstack -l 46832 > threaddump-46832.txt

在k8s中获取srv的 threaddump

1. 获取服务名

kubectl get pod | grep mgmt

output:

epic-mgmt-254096307-np82s 1/1 Running 0 46m

2. 进入服务

kubectl exec -it epic-mgmt-254096307-np82s /bin/sh

3. jps -l 获取进程ID

# jps -l

1 /epic-mgmt.jar # pid=1

1036 sun.tools.jps.Jps

4.获取 Threaddump

// 导出到 Threaddump010.txt

jstack -l 1 > /var/lib/docs/mgmt/epic-mgmt-threaddump010.txt

之所以导出到那个目录,因为 如下配置文件:(完成k8s的目录到 linux目录的映射)

...省略...

containers:

- image: 10.254.9.21/library/epic-mgmt:0.1.16

name: epic-mgmt

volumeMounts:

- mountPath: "/var/lib/docs"

name: epic-docs

- mountPath: "/var/log/epic"

name: epic-logs

ports:

- containerPort: 8028

name: mgmt

volumes:

- name: epic-docs

hostPath:

path: "/opt/data/docs"

- name: epic-logs

hostPath:

path: "/opt/data/logs"

...省略...

分析 ThreadDump

分析结果示例:

858b7e290fbb93f24af725baa576d299.png

5ee8f61df4d1c3acedcbfa3d7fe350b3.png

41cb955845d333988f7dc7302924fa51.png

11a1ada82ab893ab83d1abf312f31d52.png

ab6eb511e41297c220d5443e531ec2ae.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值