【Java】线程转储分析 ThreadDump
2017-09-06 16:45
155 查看
[[TOC]]
通过分析 ThreadDump 来查询Java程序运行情况
下面介绍 jps+jstack的方式获取 ThreadDumps
output如下:
其中 ++46832 com.chinamobile.epic.MgmtApplication++ 为将要分析的程序程序;
example: 得到转储文件 threaddump-46832.txt
之所以导出到那个目录,因为 如下配置文件:(完成k8s的目录到 linux目录的映射)
http://fastthread.io
通过分析 ThreadDump 来查询Java程序运行情况
获取线程转储文件
有多种方式可以获取转储文件,可参考链接HOW TO TAKE THREAD DUMPS? – 8 OPTIONS。下面介绍 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 <pid> > <file-path>
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 -l1 /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
使用在线工具:http://fastthread.io
分析结果示例:
相关文章推荐
- 关于Java线程转储分析
- Java线程Dump分析工具--jstack
- Java线程泄露的分析与处理
- Linux下Java线程详细监控和其dump的分析使用—-分析Java性能瓶颈
- Java问题定位之如何借助线程堆栈进行问题分析
- 【深入分析JAVA多线程】(1)详解进程、线程以及线程安全
- Java线程中 start与run的区别以及源码分析
- Java创建线程的细节分析
- Java线程Dump分析工具--jstack
- java 多线程学习之多生产者多消费者产生的线程安全问题分析与解决:Lock和Condition
- java线程状态及分析
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
- 分析占用了大量 CPU 处理时间的是Java 进程中哪个线程
- 如何分析java进程中哪个线程最耗资源
- java线程的join分析
- Java线程Dump分析工具--jstack
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
- Linux下如何对Java线程进行分析?
- 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题
- 使用jstack和TDA进行java线程dump分析