I am currently working on a well utilised engine which currently has ~ 49 GB of heap space at maximum, we're planning to increase this to 110 GB since we have the resources available.
Sadly, the engine guide (10 LTS) does not state anything about the GC used nor does it recommend to set the heap to a constant size which is recommended for enterprise applications (IIRC) to avoid additional overhead from shrinking / expanding the committed heap memory.
So I took a look at the 12 LTS doc to find nothing here as well.
The main reason why I even bother with the GC is that I suspect it to be partly responsible for bad performance on a 500+ CCU engine.
We currently have lines like:
[2025-09-13T06:25:01.903+0200][15590.520s][info][gc] GC(597) Pause Young (Concurrent Start) (G1 Evacuation Pause) 7207M->4582M(25280M) 5867.931ms
[2025-09-13T06:27:12.366+0200][15720.982s][info][gc] GC(628) Pause Young (Normal) (G1 Evacuation Pause) 6280M->5072M(24576M) 6274.184ms
[2025-09-16T15:30:20.618+0200][307509.512s][info][gc] GC(25650) Pause Young (Normal) (G1 Evacuation Pause) 3602M->3265M(25952M) 5690.326ms
which indicate issues with the GC's pause length, the default for MaxGCPauseMillis is 200 indicating that the GC has trouble meeting this soft goal.
Are there any recommendations for the GC tuning in Axon Ivy which you could share with us, especially for medium - big installations?
I'd currently go with the following settings for G1GC (160 GB RAM, 16 Cores):
-Xms110g
-Xmx110g
XX:G1HeapRegionSize=16m
XX:G1ReservePercent=15
XX:InitiatingHeapOccupancyPercent=30
XX:ParallelGCThreads=16
XX:ConcGCThreads=4