User Guide
Prerequisites
Only JIRA Administrators and JIRA System Administrators can access the License Monitoring menu.
To access the Thread Profiler settings:
Choose Jira Settings→ System.
Locate Thread Profiler section and select the Settings menu.
Configuration
You can configure:
Thread expiration time (ms): The time in milliseconds after a thread will become a slow thread. As soon as the response time of any thread bypasses this limit several thread dump will be created for later analysis. The default value is 10000 (10 seconds).
Max log count (1-10): The number of the maximum StackTrace logging of a slow thread. The default value is 6.
Check frequency (ms): The frequency in milliseconds of StackTrace logging of a slow thread. The default value is 500.
For the configuration to take effect you must disable and enable the app!
The default configuration means that a thread will be considered as slow when the Jira server does not send the HTTP response for the user's request in 10 seconds. After that, the Thread Profiler will log a stack trace and some additional information of the thread. If the thread is still not finished a new stack trace will be logged of the thread in the given frequency (500 ms) and count (6).
Logging
The slow thread log messages will be logged in to the atlassian-jira.log
file by default. For better reading and easier analyzing it is recommended to log these stack traces into a separate log file. You can extend the default Log4J configuration with this configuration for example:
#####################################################
# Everit profiler logging configuration
#####################################################
log4j.appender.everitProfilerLog=com.atlassian.jira.logging.JiraHomeAppender
log4j.appender.everitProfilerLog.File=everit-profiler.log
log4j.appender.everitProfilerLog.MaxFileSize=20480KB
log4j.appender.everitProfilerLog.MaxBackupIndex=10
log4j.appender.everitProfilerLog.layout=com.atlassian.logging.log4j.NewLineIndentingFilteringPatternLayout
log4j.appender.everitProfilerLog.layout.ConversionPattern=%d %t %p %X{jira.username} %X{jira.request.id} %X{jira.request.assession.id} %X{jira.request.ipaddr} %X{jira.request.url} [%q{2}] %m%n
log4j.appender.everitProfilerLog.layout.StackTracePackagingExamined=false
log4j.appender.everitProfilerLog.layout.MinimumLines=6
log4j.appender.everitProfilerLog.layout.ShowEludedSummary=false
log4j.appender.everitProfilerLog.layout.FilteringApplied=true
log4j.appender.everitProfilerLog.layout.FilteredFrames=@jira-filtered-frames.properties
log4j.logger.biz.everit.jira.profiler = INFO, everitProfilerLog
log4j.additivity.biz.everit.jira.profiler = false
#####################################################
Recommendation
It is recommended to turn on the profiling option in Jira system as well for better understanding what happened in your Jira.