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
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> threaddump.txt or % jstack > 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> 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
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.