`

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在特定时刻生成的一种快照,...

    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)在某一时间点捕捉到的所有线程的状态快照。通过...

    IBM Thread and Monitor Dump Analyzer for Java

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

    java dump堆栈分析工具

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

    java Thread Dump Lockness检查死锁

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

    javacore\heapdump文件分析工具

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

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

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

Global site tag (gtag.js) - Google Analytics