Linux/Unix

1. Find the Java/Tomcat process id.

% ps ax | grep java

You should see output like this

17207 ?        Sl    78:36 /usr/java/default/bin/java -Djava.util.logging.config.file=/usr/tomcat/tomcat6/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xmx1024M -Xms128M -XX:MaxPermSize=256M -Djava.awt.headless=true -Djava.endorsed.dirs=/usr/tomcat/tomcat6/endorsed -classpath :/usr/tomcat/tomcat6/bin/bootstrap.jar -Dcatalina.base=/usr/tomcat/tomcat6 -Dcatalina.home=/usr/tomcat/tomcat6 -Djava.io.tmpdir=/usr/tomcat/tomcat6/temp org.apache.catalina.startup.Bootstrap start

2. Execute the following command to generate a thread dump

 % kill -3 <pid>

Run this command every 5-10 seconds, 5 times.

3.The thread dump is written to the standard output.  It may logged in the console or <tomcat>/logs/stdout or <tomcat>/logs/catalina.out.

4. If you are running JDK 6.0+, you may also use jstack to produce a thread dump.

 % jstack -l <pid> > threaddump.txt
or
% jstack <pid> > threaddump.txt

Windows

Running as a Windows service

1a. If installed using Tomcat installer, click All Programs ->Apache Tomcat 6.0->Monitor Tomcat. An icon should appear in task bar.

1b. If not installed using Tomcat installer, navigate to <tomcat>/bin, and run the following command

 % tomcat7.exe //MS//Tomcat7

The Tomcat monitor icon should appear in the system tray.;

2. Right click the the icon and select Thread Dump.

Run this command every 5-10 seconds, 5 times

3. Look for the thread dump in  <tomcat>/logs/stdout or <tomcat>/logs/catalina.out.

Running from startup.bat

1. Open "Windows Task Manager",

2. Find the process ID of the java process

3. Make sure <JDK>/bin is in your command path. Otherwise, navigate to <JDK>/bin

4. Execute the following command to generate a thread dump

 % jstack -l <pid> >  threaddump.txt

Run this command every 5-10 seconds, 5 times

If you receive an error running jstack such as the below, then you may need to use psexec:

7988: Insufficient memory or insufficient privileges to attach
The -F option can be used when the target process is not responding
 
1. Download psexec from this website.
2. Unzip the 'PSTools' directory to a suitable place on your server.
3. Open a command prompt as Administrator and navigate to the location of the PSTools folder using the command prompt.
 
 
4. Open Task Manager > Services and find your Java (Tomcat) service and note down the PID number.
 

 5. At the command prompt type 'psexec -s [jdk path]\jstack.exe XXXX >> thread_dump_ddmmyy.log' (where XXXX is your PID and ddmmyy is the current date to append to the name of the log file) then hit enter. 
 
 

Run this command every 5-10 seconds, 5 times

You can also add the full path of your Java 'bin' directory to the server's system path variable. The Java 'bin' directory is usually in 'Program Files\Java\bin\jdk<version>\bin'.  If you add this path to the system variable then you will need to restart the command prompt again for the change to be picked up and the 'jstack' command to work.

reference from:
http://support.jamasoftware.com/entries/20535318-Performing-a-thread-dump-in-Linux-or-Windows

Performing a thread dump in Linux or Windows--reference的更多相关文章

  1. 013-程序性能分析之thread dump和heap dump

    一.dump基本概念 主要用于故障定位(尤其是out of memory)和性能分析.主要记录了JVM运行期间的内存占用.线程执行等情况,这就是常说的dump文件.常用的有heap dump和thre ...

  2. 性能分析之-- JAVA Thread Dump 分析综述

    性能分析之-- JAVA Thread Dump 分析综述       一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工 ...

  3. [转]Java Thread Dump 性能分析

    Java and Thread 一个 web 服务器使用几十到几百个线程来处理大量并发用户,如果一个或多个线程使用相同的资源,线程之间的竞争就不可避免了,并且有时候可能会发生死锁. Thread co ...

  4. thread dump

    最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相关知识整理在一起,输出文章如下. 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Du ...

  5. 如何抓取Thread Dump小结(转)

    当系统性能出现问题时,需要从各个方面来查看网络环境.主机资源.查看最经变更的代码等.如果是想从代码层面解决问题,那么最有效的方法就是查看相关dump文件.如果是使用IBM JDK(我默认你是在aix环 ...

  6. Thread Dump 和Java应用诊断(转)

    Thread Dump 和Java应用诊断 Thread Dump是非常有用的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力.虽然各 ...

  7. java程序性能分析之thread dump和heap dump

    一.dump基本概念 在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题.这些文件记录了JVM运行期间的内存占用.线程执行等情况,这就是我们常说的 ...

  8. java jvm heap dump及 thread dump分析

    一.概念: 在进行java应用故障分析时,经常需要分析内存和cpu信息,也就说所谓的heap dump 和 thread dump heap dump: heap dump文件是一个二进制文件,需要工 ...

  9. [JAVA]JAVA章4 Thread Dump如何分析

    一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工具.每一个Java虚拟机都有及时生成所有线程在某一点状态的thread- ...

随机推荐

  1. JNI/NDK开发指南(一)—— JNI开发流程及HelloWorld

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/41777471 JNI全称是Java Native Interface(Java本地接口)单 ...

  2. Ansj分词双数组Trie树实现与arrays.dic词典格式

    http://www.hankcs.com/nlp/ansj-word-pairs-array-tire-tree-achieved-with-arrays-dic-dictionary-format ...

  3. python代码优化技巧

    转自:http://www.douban.com/group/topic/31478102/ 这个资料库还有些不错的好文章: http://www.ibm.com/developerworks/cn/ ...

  4. 【poj3734】矩阵乘法求解

    [题意] 给N个方块排成一列.现在要用红.蓝.绿.黄四种颜色的油漆给这些方块染色.求染成红色方块和染成绿色方块的个数同时为偶数的染色方案的个数,输出对10007取余后的答案.(1<=n<= ...

  5. [转贴]watin的一些例子

    Some WatiN ExamplesBelow are some examples of WatiN codes for testing:// find div by idvar div = bro ...

  6. 消息队列feed程序实现中的问题

    因项目需要, 构建了很多消息队列还排队处理任务, 相应的每个队列也配有一个feed程序来feed消息 一开始很简单地这样做: while (true){ $msg = $query->bPop( ...

  7. 【HDOJ】2732 Leapin' Lizards

    贪心+网络流.对于每个结点,构建入点和出点.对于每一个lizard>0,构建边s->in position of lizard, 容量为1.对于pillar>0, 构建边in pos ...

  8. Codevs_1040_[NOIP2001]_统计单词个数_(划分型动态规划)

    描述 http://codevs.cn/problem/1040/ 与Codevs_1017_乘积最大很像,都是划分型dp. 给出一个字符串和几个单词,要求将字符串划分成k段,在每一段中求共有多少单词 ...

  9. ARC模式下的单例写法

    // 单例 + (id)sharedInstance { __strong static id sharedObject = nil; static dispatch_once_t onceToken ...

  10. linux下包管理命令yum与apt-get以及开发环境配置

    一般来说市面上常见的Linux系统分为两大类: RH类:Redhat.centOS和Fedora等 Debian类:ubuntu.Debian等. 上述两类系统对应的包管理工具命令分别是yum和apt ...