My question:
What does your v8.x heap look like?
Background
I ran into problems because I did not adequately read and understand the Jira 7.x and 8.x release notes. I left the heap at 768MiB (crashed in hours) then 1024MiB, then 2048MiB (crash in 48 hours).
Now: I _think_ I have read properly, and I have asked a support question, \[THANKS Sergey, by the way for putting up with my stumbles] receiving the answer that a good heap size in my case is 6GiB, but that 4GiB may be OK.
I am running on 4GiB now, sort of as an experiment. My JMX is reporting heap use climbing, Runtime is 48 hours, the last garbage collection was from 2.58GB used down to 1.99GB used. GC is hacking healthy chunks back still. My instance stats are: Users: 21, Concurrent users: 10 ish, Issues: 237k, Projects: 87 (archived: 0), Custom Fields: 259, Workflows: 40, Groups: 18, Comments: 524396.
My mysqld runs on the same server, and is handling only jiradb.
top yields Jira and mysqld as memory users #1 and #2:
| MINFLT | MAJFLT | VSTEXT | VSLIBS | VDATA | VSTACK | VSIZE | RSIZE | VGROW | RGROW | SWAPSZ| MEM | CMD|
| 10| 0| 4K | 17836K|10.1G| 84K|10.8G|4.1G| 0K|-704K| 0K | 53% | java |
|3097| 0 | 23304K | 3508K| 2.9G| 92K| 3.0G | 461.9M| 0K| 0K| 0K | 6% | mysqld|
The on-disk size of my database is 1.8GB.
My arm-waving goes like this: There is enough heap now to hold a complete copy of the dataset in RAM, and have 2GB left over for working heap. That is heaps of heap! ;)
My disclaimer/apology: I am not a programmer. I do not have an abiding interest in JVM memory management. I admire those who are and do.
I recommend using the Jira Sizing guide as a way to gauge your system specs against a series of different Jira environment sizes. In your case, I think your environment best fits a Large-scale environment outlined in that guide.
In which case we would expect Jira to have at least a 4GB heap, but also just as importantly is to make sure that the operating system has at least 16GB of total system memory. This is often overlooked when spec'ing out a server to run Jira. In addition to the heap size, we also need to account for providing sufficient system resources to the operating system to be able to keep other processes running smoothly. This is especially true when running the SQL database on the same machine.
What method is your Jira using to handle garbage collection? I recommend using the G1GC for most Jira environments. As does our guide in Tuning Garbage collection. Most environments are not setup this way by default though. So in order to enable it you have to set a startup JVM flag to the setenv file or the service starting Jira.
To manually enable the G1GC method by following the steps in Setting properties and options on startup - Atlassian Documentation and adding the parameter of -XX:+UseG1GC to the JVM_SUPPORT_RECOMMENDED_ARGS= section.
That Tuning Guide is also very helpful in understanding how you can help measure/improve your performance.
Thanks Andrew. I agree that the sizing guide was useful. (it has a v7+ disclaimer and is, for v8, replaced by the Data Centre Size Profiles and linked pages). However, I have to juggle the recommendations against cost. Recommendations aside, the consumed memory is a noteworthy, perhaps even surprising, change from v7 to v8.
I would like to learn something about this from people in similar situations.
I am going to address bloat next. I have many archivable tickets and a pandemic of custom fields. Then I'll turn on G1GC - I am feeling it out in small steps.
Thanks again.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.