【Java】线程转储分析 ThreadDump
[[TOC]]
通过分析 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 -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
使用在线工具:
http://fastthread.io

分析结果示例:





【Java】线程转储分析 ThreadDump的更多相关文章
- 获取Java线程转储的常用方法
1. 线程转储简介 线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照. 线程转储一般使用文本格式, 可以将其保存到文本文件中, 然后人工查看和分析, 或者使用工具/API自动分 ...
- Java 线程转储 [转]
http://www.oschina.net/translate/java-thread-dump java线程转储 java的线程转储可以被定义为JVM中在某一个给定的时刻运行的所有线程的快照.一个 ...
- Java 线程转储
软件维护是一个枯燥而又有挑战性的工作.只要软件功能符合预期,那么这个工作就是好的.设想一个这样的情景,你的电话半夜也一直在响(这不是一个令人愉快的感受,是吧?)任何软件系统,无论它当初是被设计的多好, ...
- Java线程问题分析定位
Java线程问题分析定位 分析步骤: 1.使用top命令查看系统资源占用情况,发现Java进程占用大量CPU资源,PID为11572: 2.显示进程详细列表命令:ps -mp 11572 -o THR ...
- Java问题定位之Java线程堆栈分析
采用Java开发的大型应用系统越来越大,越来越复杂,很多系统集成在一起,整个系统看起来像个黑盒子.系统运行遭遇问题(系统停止响应,运行越来越慢,或者性能低下,甚至系统宕掉),如何速度命中问题的根本原因 ...
- java线程池分析和应用
比较 在前面的一些文章里,我们已经讨论了手工创建和管理线程.在实际应用中我们有的时候也会经常听到线程池这个概念.在这里,我们可以先针对手工创建管理线程和通过线程池来管理做一个比较.通常,我们如果手工创 ...
- java线程dump分析工具
jstack和线程dump分析 java程序性能分析之thread dump和heap dump 一.[内存dump] jmap –dump:live,format=b,file=heap.bin ...
- Java线程堆栈分析
不知觉间工作已有一年了,闲下来的时候总会思考下,作为一名Java程序员,不能一直停留在开发业务使用框架上面.老话说得好,机会是留给有准备的人的,因此,开始计划看一些Java底层一点的东西,尝试开始在学 ...
- 使用jstack和TDA进行java线程dump分析
转载:http://blog.csdn.net/everlasting_188/article/details/51943095 1.jstack重点关注 命令行:jstack [-l][F] pid ...
随机推荐
- jeecg-org.jeecgframework.web.system.listener.InitListener
早上启动项目 发现报错 百度之后,发现这属于jeecg常见问题: http://www.jeecg.org/forum.php?mod=viewthread&tid=1830&extr ...
- HPU组队赛J:Ball King(线段树)
时间限制 1 Second 内存限制 512 Mb 题目描述 HPU601球王争霸赛即将举行,ACMER纷纷参加. 现在有n个人报名参赛,每个人都有一个实力值 ai,实力值较大者获胜. 为保证比赛公 ...
- iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
iostat 命令 查看硬盘的使用情况: iostat iostat -x iotop 命令: 若没安装先安装: yum install iotop -y free 命令,用于查看内存的使用量: fr ...
- 实验吧—Web——WP之 猫抓老鼠
打开解题链接后,发现他是让我们输入key提交查询就能进行下一步 题目中提示了:catch(抓的意思) 那么我们很容易就能想到是BP抓包,抓包后直接放到repeater中改包. 我们先GO一下看看有什么 ...
- LeetCode - Find Duplicate Subtrees
Given a binary tree, return all duplicate subtrees. For each kind of duplicate subtrees, you only ne ...
- 将koa+vue部署到服务器
很久很久以前,就对前后端如何分离,后端如何把代码部署到服务器有浓厚的兴趣,最近在阿里云上申请了一个服务器,试试水吧! 本文参考了文章<基于Node的Koa2项目从创建到打包到云服务器指南> ...
- 下载并安装oracle 11g客户端
之所以一直没安装成功是因为找不到安装程序,找到的那些要么没有安装程序,要么安装时出错或者安装后用不了,反正一大堆问题 先给个oracle客户端的下载链接 https://pan.baidu.com/s ...
- 代码分层之模拟servlet调用dao
一:代码分层 com.guangming.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据com.guangming.servlet 存放servlet相 ...
- day 52 js学习 DOM 和BOM
前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...
- What are User and Group Permissions
https://www.linode.com/docs/tools-reference/linux-users-and-groups/ What are User and Group Permissi ...