How to increase the speed of full reindex in Jira Server and Data Center

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Deprecation notice

This article has been superseded by:

How to troubleshoot and optimize the Full Reindex in Jira Server and Data Center

The contents below were kept in place as lingering reference material and may soon be removed in favor of the redirection to the one above.


If you have a large JIRA instance (>300k issues) then Full reindex might take a couple of hours. The performance of reindexing depends on many factors:

  • CPU performance
  • Disk performance
  • DB performance
  • Number and type of custom fields

By default, full reindex on JIRA 7.x runs only 10 threads, and Jira 8.x and 9.x run on 20 threads. If you have really good hardware then it might be underutilized and you may be able to reduce reindexing time. This is not applicable to background reindex which it's always single-threaded. 

(info) The indexing operation is very database-intensive. If increasing the number of threads doesn't improve the performance, chances are that the database is the bottleneck.
Make sure that latency between Jira and the database is low and that DB index maintenance is done on a regular basis.

Solution

Goal is to review system resources and increase number of index threads until you reach saturation point. You shouldn't look at a single factor only. Please note that Lucene disk writer is single-threaded, so the goal to prepare just enough data for it.  

Please check system load during re-index:

  • CPU utilization (if it's below 50%, then you might benefit from tuning)
  • Disk utilization (if it's below 70%, then you might benefit from tuning)
  • DB utilization (check with your DBA if you have capacity there) increase DB pool size if required

Regarding Custom field indexers, they may be analyzed using the metrics described on this page (available for Jira 8.1 and later):

Tuning:

Add/update the value of jira.index.issue.threads in the $JIRA_HOME/jira-config.properties.
Optionally, also add jira.index.sharedentity.threads to tune the number of threads that reindex the filters ("SearchRequests") after the issues are indexed.

(info) In new Jira installations, this file may not initially exist and if so, it needs to be created manually. 

For Jira 7.x

# jira.index.issue.threads = 10 (default for Jira 7.x)
jira.index.issue.threads = 20

For Jira 8.x and above - change only if the number of CPUs allows, e.g. for a system with 32 CPUs set the value to 30 or 32

# jira.index.issue.threads = 20 (default for Jira 8.x and 9.x)
jira.index.issue.threads = 30
# jira.index.sharedentity.threads = 10 (default filter reindex threads for Jira 8.x and 9.x)
jira.index.sharedentity.threads = 30

Ideas regarding tuning:

  • It's necessary to restart the application to apply any changes done on jira-config.properties
  • Don't increase the value too high (eg: above 2x number of CPU cores.)
  • You can start with value 20 and then increase the value with small steps running a full reindex each time. If you don't see significant improvement then roll back the change. 

Please see for more details:  JRA-38598 - Getting issue details... STATUS   JRA-25788 - Getting issue details... STATUS

Below are some examples of reindexing time reduction due to better tuning:

  1. Did increase the number of threads to 50 this weekend, and the lockout-reindex time decreased from 50 min to 10 min. Average core utilization increased from 10% to 40%.
  2. Here are my test results for 300k issues, 32 cores, 48 RAM instance: from 10 to  32 threads, time decreased 29m to 15m
  3. Set threads to 20. We managed to reduce the indexing by 1 hour, from 3 hrs 40mins to 2hrs 40mins.


DescriptionIf you have a large JIRA instance (>300k issues) then Full reindex might take a couple of hours. Performance of reindex depends on many factors: CPU performance, Disk performance, DB performance. By default, JIRA runs only 10 threads to do Full reindex, so if you have a really good hardware, then it might be underutilized and you can reduce re-index time. This is not applicable to background re-index as it's always single threaded. 
ProductJira
PlatformServer
Last modified on Sep 12, 2024

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.