[[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的更多相关文章

  1. 获取Java线程转储的常用方法

    1. 线程转储简介 线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照. 线程转储一般使用文本格式, 可以将其保存到文本文件中, 然后人工查看和分析, 或者使用工具/API自动分 ...

  2. Java 线程转储 [转]

    http://www.oschina.net/translate/java-thread-dump java线程转储 java的线程转储可以被定义为JVM中在某一个给定的时刻运行的所有线程的快照.一个 ...

  3. Java 线程转储

    软件维护是一个枯燥而又有挑战性的工作.只要软件功能符合预期,那么这个工作就是好的.设想一个这样的情景,你的电话半夜也一直在响(这不是一个令人愉快的感受,是吧?)任何软件系统,无论它当初是被设计的多好, ...

  4. Java线程问题分析定位

    Java线程问题分析定位 分析步骤: 1.使用top命令查看系统资源占用情况,发现Java进程占用大量CPU资源,PID为11572: 2.显示进程详细列表命令:ps -mp 11572 -o THR ...

  5. Java问题定位之Java线程堆栈分析

    采用Java开发的大型应用系统越来越大,越来越复杂,很多系统集成在一起,整个系统看起来像个黑盒子.系统运行遭遇问题(系统停止响应,运行越来越慢,或者性能低下,甚至系统宕掉),如何速度命中问题的根本原因 ...

  6. java线程池分析和应用

    比较 在前面的一些文章里,我们已经讨论了手工创建和管理线程.在实际应用中我们有的时候也会经常听到线程池这个概念.在这里,我们可以先针对手工创建管理线程和通过线程池来管理做一个比较.通常,我们如果手工创 ...

  7. java线程dump分析工具

    jstack和线程dump分析  java程序性能分析之thread dump和heap dump 一.[内存dump] jmap –dump:live,format=b,file=heap.bin ...

  8. Java线程堆栈分析

    不知觉间工作已有一年了,闲下来的时候总会思考下,作为一名Java程序员,不能一直停留在开发业务使用框架上面.老话说得好,机会是留给有准备的人的,因此,开始计划看一些Java底层一点的东西,尝试开始在学 ...

  9. 使用jstack和TDA进行java线程dump分析

    转载:http://blog.csdn.net/everlasting_188/article/details/51943095 1.jstack重点关注 命令行:jstack [-l][F] pid ...

随机推荐

  1. jeecg-org.jeecgframework.web.system.listener.InitListener

    早上启动项目 发现报错 百度之后,发现这属于jeecg常见问题: http://www.jeecg.org/forum.php?mod=viewthread&tid=1830&extr ...

  2. HPU组队赛J:Ball King(线段树)

    时间限制 1 Second  内存限制 512 Mb 题目描述 HPU601球王争霸赛即将举行,ACMER纷纷参加. 现在有n个人报名参赛,每个人都有一个实力值 ai,实力值较大者获胜. 为保证比赛公 ...

  3. iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令

    iostat 命令 查看硬盘的使用情况: iostat iostat -x iotop 命令: 若没安装先安装: yum install iotop -y free 命令,用于查看内存的使用量: fr ...

  4. 实验吧—Web——WP之 猫抓老鼠

    打开解题链接后,发现他是让我们输入key提交查询就能进行下一步 题目中提示了:catch(抓的意思) 那么我们很容易就能想到是BP抓包,抓包后直接放到repeater中改包. 我们先GO一下看看有什么 ...

  5. LeetCode - Find Duplicate Subtrees

    Given a binary tree, return all duplicate subtrees. For each kind of duplicate subtrees, you only ne ...

  6. 将koa+vue部署到服务器

    很久很久以前,就对前后端如何分离,后端如何把代码部署到服务器有浓厚的兴趣,最近在阿里云上申请了一个服务器,试试水吧! 本文参考了文章<基于Node的Koa2项目从创建到打包到云服务器指南> ...

  7. 下载并安装oracle 11g客户端

    之所以一直没安装成功是因为找不到安装程序,找到的那些要么没有安装程序,要么安装时出错或者安装后用不了,反正一大堆问题 先给个oracle客户端的下载链接 https://pan.baidu.com/s ...

  8. 代码分层之模拟servlet调用dao

    一:代码分层 com.guangming.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据com.guangming.servlet 存放servlet相 ...

  9. day 52 js学习 DOM 和BOM

    前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...

  10. What are User and Group Permissions

    https://www.linode.com/docs/tools-reference/linux-users-and-groups/ What are User and Group Permissi ...