If your Jira Data Center instance has over 1 million issues, full reindexes are painful. Ours used to run 8 hours and block users. Here is what actually moved the needle for us.
The problem:
Default settings are tuned for small instances. On Data Center with 2 nodes, 1.4M issues, and 200 custom fields, a foreground reindex locked the system all day.
What we changed:
Increase indexing threads
File: jira dot properties on each node
Change: jira dot indexing dot thread dot count equals 8
Default is 1. We set it to half our CPU cores per node. Always test in staging. Too high and you get contention.
Move to SSD and split the index from home
File: setenv dot sh on each node
Change: JVM_SUPPORT_RECOMMENDED_ARGS equals -Dcom dot atlassian dot jira dot localhome dot indexdir equals /opt/jira-index
We put the index on a dedicated NVMe drive. Latency dropped 60 percent. Never keep index on NFS.
Clean custom fields before reindex
We had 40 unused custom fields with global contexts. We used the app ScriptRunner to find them, then deleted or narrowed the context. Each global custom field adds time to indexing. After cleanup, index size dropped 22 percent.
Use background reindex for apps only
Full foreground reindex is rare now. For app installs, we run background reindex with Issue Indexing Replication. Users stay online.
Result:
Full foreground reindex: 8 hours 10 minutes down to 35 minutes
Background reindex: 2 hours down to 18 minutes
Zero user complaints during business hours
Biggest gotcha:
If you cluster, set the same indexing thread count on all nodes. Mismatched values cause replication lag.
What did you do to speed up indexing. Share your jira dot properties tweaks below.
HEMANT SAINI
5 comments