Troubleshoot Jira Server performance with GC logs
Platform Notice: Server and Data Center Only - This article only applies to Atlassian products on the server and data center platforms.
The instructions here are for JIRA 7.3 and older only.
We've improved the garbage collection logs starting from JIRA 7.4, and they're now generated automatically, you'll be able to find them in your logs at <installation-directory>/logs.
Other than that, all the recommended parameters below are no longer supported in Java 9 and upwards, as the Unified JVM Logging has been introduced. So, if your Java version is newer than Java 8, please follow the steps here:
JIRA applications are robust applications that rarely require in-depth garbage collection (GC) tuning. However, on large-scale installations, GC tuning can improve the performance of JIRA applications. Analysis of GC logs can also assist in troubleshooting performance problems with a JIRA application. Starting from JIRA 7.4, GC logs are generated automatically, and you can find them in
Verbose garbage collection will generate log statements that indicate when Java is collecting garbage, how long this process takes, and how much memory has been freed. You can enable verbose garbage collection by adding the below options to the JVM, as in our Setting Properties and Options on Startup documentation.
Xloggc parameter must use the full path for the location of the GC logs, as in the below examples. We recommend putting them in the
$JIRA_HOME/log directory as when generating a Support Zip they will be included. If your directory is different than the default, please use that directory.
The parameter -XX:+PrintGCCause was introduced within Java 1.7.0_45 and will not work if you are using a version of Java prior to that version. Please check the version of Java that is being used by your instance of JIRA prior to using this flag.
Using Linux/Unix (Java up to 8):
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause -Xloggc:<PATH_TO_GC_LOGS>/atlassian-jira-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M
Using Linux/Unix (Java 9 and later):
Using Windows (Java up to 8):
-Xlog:gc*:file=<PATH_TO_GC_LOGS>\atlassian-jira-gc-%t.log:tags,time,uptime,level:filecount=5,filesize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause -Xloggc:<PATH_TO_GC_LOGS>\atlassian-jira-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M
Using Windows (Java 9 and later):
We advise setting the
<PATH_TO_GC_LOGS> the same as Jira's installation directory (
/opt/atlassian/jira/logs. This allows the GC logs to be included in Support Zips.
Where to set the parameters
You may follow the Setting properties and options on startup guide to set the parameters. We advise filling the
JVM_SUPPORT_RECOMMENDED_ARGS if the first's not present.
Be mindful that some parameters may already be present elsewhere in the
setenv.bat. We advise removing them from elsewhere to avoid duplicates and confusion on later editions fo the file.
- Once you have added these options and restarted your JIRA applications, the log specified by the
-Xloggcparameter will record memory usage information that can be analyzed using tools like GCViewer.
- A more complete guide to the practices and principles of GC tuning can be found at Garbage Collection (GC) Tuning Guide.
- Java VisualVM can also be installed and used to bind to the process that is running your JIRA applications. This can be used to analyze CPU utilization by GC, along with the heap usage. The visualGC plugin is recommended to be installed as it will provide a visual breakdown of each heap space.
- To better understand GC, you can also take a look at third-party blogs, such as Java Garbage Collection Distilled.
In addition to GC logging, you can also use heap dumps for analysis. For more information, see Analyze OutofMemory errors in Jira server with Heap Dumps.
It is unwise to provide general recommendations for all situations - there is no substitute for an in-depth assessment using analysis tools. Atlassian recommends engaging the services of an Atlassian Partner for performance analysis of your JIRA applications and the environment it runs in.
Please see our Troubleshoot performance issues in Jira server documentation for further assistance with diagnosing performance problems.