[[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. 四则运算可能需要注意的地方V1.1

    作业:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/997 文档下载:https://coding.net/u/Dawnfox/p/ ...

  2. QuickSort(Java)

    private void quickSort(int[] input, int start, int end) { if (start >= end) return; int index = p ...

  3. 2017-2018-2 20165313实验三 《敏捷开发与XP实践》

    实验报告封面 实验内容及步骤 实验一 1.试验要求: 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba 插 ...

  4. python------面向对象介绍之经典类与新式类的继承顺序

    一. 经典类与新式类的继承顺序 1 class A: def __init__(self): print("A") class B(A): def __init__(self): ...

  5. Chrome (开发者工具)快捷键

    https://9iphp.com/web/javascript/chrome-devtools-shortcuts.html https://www.cnblogs.com/davidwang456 ...

  6. Two Sum II - Input array is sorted

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  7. 关于导出csv格式文件的身份证号、日期的处理

    EXCEL系统的单元格,默认格式是常规或数值格式下,数字超过10位即以科学计数法显示,对15位以后的数字用0填充. 在导入到Excel.导出csv文件时,对于身份证号自动变成科学计数法的地方,就要做一 ...

  8. js技巧专题篇: 页面跳转

    本篇主要介绍网页上常见的页面跳转技术.页面跳转有几种方式,比较常用的是window.location.href,window.location.replace,window.open,当然还有目前比较 ...

  9. python2核心类库:urllib、urllib2的区别和使用

    urllib/urllib2都是接受URL请求的相关模块区别:1.urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,你不可以伪装 ...

  10. 怎么用fiddler抓APP的包

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/liujingqiu/article/details/79387909Fiddler安装 此处略.我们 ...