Documentation for JIRA 5.0. Documentation for other versions of JIRA is available too.
Occasionally, JIRA may appear to 'freeze' during execution of an operation. During these times, it is helpful to retrieve a thread dump — a log containing information about currently running threads and processes within the Java Virtual Machine. Taking thread-dumps is a non-destructive process that can be run on live systems. This document describes the steps necessary to retrieve a thread dump.
The steps necessary to retrieve the thread dump are dependant on the operating system JIRA is running in — please follow the appropriate steps below.On this page:
The information on this page does not apply to JIRA OnDemand.
The JDK ships with a tool named jstack for generating thread dumps.
Ctrl + Shift + Esc
and find the Process ID of the Java (JIRA) process. You may need to add the PID column using View
-> Select Columns ...
adam@track:~$ jstack \-l 22668 > threaddump.txt
This will output a file called threaddump.txt to your current directory.
Common issues with jstack:
java.lang.NoClassDefFoundError: sun/tools/jstack/JStack
check that tools.jar is present in your JDK's lib directory. If it is not, download a full version of the JDK.Identify the javaprocess that JIRA is running in. This can be achieved by running a command similar to:
ps -ef | grep java
The process will appear similarly as follows:
keithb 910 873 1 17:01 pts/3 00:00:18 /usr/java/jdk/bin/java -Xms128m -Xmx256m -Xms128m -Xmx256m -Djava.awt.headless=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.endorsed.dirs=/tmp/atlassian-jira-enterprise-3.6-standalone/common/endorsed -classpath :
In order to retrieve the thread dump, execute the command
kill -3 <pid>
where pid is the process id — in this case, 910.
If you have trouble using kill -3 <pid> to obtain a thread dump, try using jstack a java utility that will output stack traces of Java threads for a given process.
Identify the javaprocess that JIRA is running in. This can be achieved by running a command similar to:
ps -ef | grep java
The process will appear similarly as follows:
adam 22668 0.3 14.9 1691788 903928 ? Sl Jan27 9:36 /usr/lib/jvm/java-6-sun-1.6.0.14/bin/java -Djava.util.logging.config.file=/home/adam/Products/installs/atlassian-jira-enterprise-4.0.1-standalone/conf/logging.properties -XX:MaxPermSize=256m -Xms128m -Xmx1048m -Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true -Datlassian.mail.senddisabled=false -Datlassian.mail.fetchdisabled=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/adam/Products/installs/atlassian-jira-enterprise-4.0.1-standalone/common/endorsed -classpath /home/adam/Products/installs/atlassian-jira-enterprise-4.0.1-standalone/bin/bootstrap.jar -Dcatalina.base=/home/adam/Products/installs/atlassian-jira-enterprise-4.0.1-standalone -Dcatalina.home=/home/adam/Products/installs/atlassian-jira-enterprise-4.0.1-standalone -Djava.io.tmpdir=/home/adam/Products/installs/atlassian-jira-enterprise-4.0.1-standalone/temp org.apache.catalina.startup.Bootstrap start
Run jstack <pid> to Capture a Single Thread Dump
This command will take one thread dump of the process id <pid>, in this case the pid is 22668, and log output to the file JIRAthreaddump.txt
adam@jiratrack:~$ jstack 22668 > JIRAthreaddump.txt
Take Multiple Thread Dumps
Typically you'll want to take several dumps about 10 seconds apart, in which case you can generate several dumps and output the stack traces to a single file as follows:
adam@jiratrack:~$ jstack 22668 >> JIRAthreaddump.txt adam@jiratrack:~$ jstack 22668 >> JIRAthreaddump.txt adam@jiratrack:~$ jstack 22668 >> JIRAthreaddump.txt
Try TDA or Samurai to inspect your thread dump.
Run:
java -jar -Xmx512M ~/tda-bin-1.6/tda.jar
Check the known thread dump knowledge base articles: