`

Java Thread Dump – 系統卡死、CPU 100%等問題的診斷工具

 
阅读更多
什么是Thread Dump? 
 Thread Dump是非常有用的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力。虽然各个 Java虚拟机thread dump打印输出格式上略微有一些不同,但是Thread dumps出来的信息包含线程;线程的运行状态、标识和调用的堆栈;调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。

Thread Dump特点 

 1. 能在各种操作系统下使用
 2. 能在各种Java应用服务器下使用   
  3. 可以在生产环境下使用而不影响系统的性能  
 4. 可以将问题直接定位到应用程序的代码行上

编辑本段Thread Dump能诊断的问题 
 1. 查找内存泄露,常见的是程序里load大量的数据到缓存   2. 发现死锁线程


SUN JVM 产生ThreadDump

1. Solaris OS
  <ctrl>-’\’ (Control-Backslash)   kill -QUIT <PID>

2. HP-UX/UNIX/Linux

 
1. ps -aef|grep java  //找到你要的线程id 
2.Kill -3 <PID>   //线程id这里就可以用了
3.more /$tomcat/ catalina.out

Full thread dump Java HotSpot(TM) Server VM (1.5.0_05-b05 mixed mode):

"TP-Monitor" daemon prio=1 tid=0x6ce4f808 nid=0x183f in Object.wait() [0x69af6000..0x69af70b0]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x70823250> (a org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable)
        at org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run(ThreadPool.java:559)
        - locked <0x70823250> (a org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable)
        at java.lang.Thread.run(Thread.java:595)

。。。。。。

4.ps -efHl | grep 'java' **. **


3.Window
  直接对MSDOS窗口的程序按Ctrl-break   有些Java应用服务器是在控制台上运行,如Weblogic,为了方便获取threaddump信息,在weblogic启动的时候,会将其标准输出重定向到一个文件,用"nohup ./startWebLogic .sh > log.out &"命令,执行"kill -3 <pid>",Thread dump就会输出到log.out里。Tomcat的Thread Dump会输出到命令行控制台或者logs的catalina.out文件里。为了反映线程状态的动态变化,需要接连做三次以上thread dump,每次间隔10-20s。

常见线程状态

   Sun JVM的常见线程状态

  对于thread dump信息,主要关注的是线程的状态和其执行堆栈  
 线程的状态一般为三类  
 Runnable(R):当前可以运行的线程  
 Waiting on monitor(CW):线程主动wait  
 Waiting for monitor entry(MW):线程等锁  
 一般关注的都是第一和第三种状态的线程  
 Cpu很忙则关注runnable的线程   
  Cpu闲则关注waiting for monitor entry的线程
 
 一种典型的死锁是由于在server端应用(比如servlet)中请求由同一weblogic实例server的资源,解决办法就是将该servlet放到另外的执行队列里去执行 。
分享到:
评论

相关推荐

    java thread dump 分析

    Java Thread Dump 分析是 Java 应用程序性能优化的重要工具之一。Thread Dump 是 JVM 的一个快照,记录了当前所有线程的状态,包括线程的 ID、名称、状态、锁信息等。通过分析 Thread Dump,可以找到导致 CPU 高的...

    Java thread dump analyzer (tda)

    Java线程分析工具(TDA)是一款专为Java开发者设计的强大工具,用于解析和理解Java应用程序的线程转储(thread dump)。线程转储是Java虚拟机(JVM)在特定时刻生成的一种快照,其中包含了应用程序中所有活动线程的状态...

    Java Thread Dump Analyzing

    Java Thread Dump Analyzing

    java 内存dump分析和thread dump(java core)分析

    Java内存dump分析和Thread Dump(Java Core)是Java性能调优中的重要环节,它们能帮助开发者定位和解决系统中的各种问题,如内存泄漏、线程阻塞等。下面将详细介绍这两个概念及其分析工具。 首先,Java堆内存dump,...

    用Java thread dump 去分析程序的问题

    Java线程转储(Thread Dump)是诊断Java应用程序性能问题和异常情况的重要工具。它提供了一个运行中的Java应用中所有线程的快照,详细显示每个线程的状态、堆栈跟踪以及线程名称。线程状态包括RUNNABLE、BLOCKED、...

    java 线程 dump 分析工具 2.3.3

    java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...

    IBM java coredump(threaddump) analyzer

    IBM最新java threaddump 分析工具 java -jar jca.jar -Xmx1024m jca.jar

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程的无限循环、阻塞或者资源消耗过大导致的。以下是一套详细的排查步骤来帮助你找出是哪个jar包的哪个线程造成了这个问题。 ...

    IBM thread dump文件分析工具

    在Java虚拟机(JVM)的运行过程中,有时会出现性能问题或者系统挂起的情况,这时候我们需要深入了解线程的运行状态,这就是"IBM thread dump文件分析工具"的作用所在。线程dump文件是JVM在特定时刻生成的一种快照,...

    使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因解析

    在这样的背景下,开发者需要寻找其他诊断工具来定位问题,比如本文所介绍的 dotnet-dump 工具。 首先,需要明确的是,.NET Core 3.0 是微软推出的针对云优化的应用程序框架的更新版本。.NET Core 3.0 带来了许多新...

    JAVA线程dump的分析

    JAVA线程dump是指在JAVA程序中,当前线程的状态和调用堆栈的快照,能够帮助开发者了解当前程序的执行情况,诊断问题和性能瓶颈。生成JAVA线程dump的方法在不同的操作系统下是不同的,在Windows环境中,可以敲击Ctrl-...

    javacore和dump分析工具

    这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT 等工具都可以分析这种文件。 Java core 文件保存的是 java 应用程序在崩溃时或任一时刻关于 Java 运行环境的各种信息。包括 Java 虚拟机的...

    java故障排查ThreadDump

    在Java开发及运维工作中,Thread Dump是一项极其重要的工具,它能够帮助我们诊断并解决Java应用程序中出现的各种问题。Thread Dump,即线程快照,是指Java虚拟机(JVM)在某一时间点捕捉到的所有线程的状态快照。通过...

    java dump堆栈分析工具

    java dump 堆栈 dumpAnalyzer 分析,在日常工作中,经常会遇到,系统跑着跑着就会出现性能问题,CPU居高不下。这个时候我们就需要对系统的堆栈信息进行分析。这里就介绍如何使用IBM内存检测工具(dumpAnalyzer)。

    java Thread Dump Lockness检查死锁

    java Thread Dump 其实就是stack trace。 我们平时经常会碰见java异常,并且得到异常的方法用e.printstacktrace 实际上程序正常运行时也是会有stack trace的,只不过平时不显示出来而已。如何能正常及时显示堆栈信息...

    IBM Thread and Monitor Dump Analyzer for Java

    IBM Thread and Monitor Dump Analyzer for Java 是一款专门针对Java应用程序的诊断工具,主要用于解析和分析Java核心转储(javacore)文件。这类文件通常在Java应用程序遇到问题,如挂起、内存溢出或异常时自动生成...

    IBM Thread and Monitor Dump Analyzer for Java (jca) 线程分析工具

    IBM提供的分析javacore和dump的内存分析工具,非常...分析线程情况 JavaCore 或 ThreadDump文件,即线程的映像,用来分析线程资源锁等情况, 可参考:https://blog.csdn.net/weixin_34129696/article/details/85868951

    javacore\heapdump文件分析工具

    `javacore`和`heapdump`文件就是用来记录和诊断这类问题的重要工具。本篇文章将详细讲解如何使用`javacore`和`heapdump`分析工具,特别是针对Websphere环境的`ha`和`jca`工具,以及如何使用JDK1.6来打开和解析这些...

Global site tag (gtag.js) - Google Analytics