In December 2017 we start with huge project, and since than our database growth every day (it's on 40GB at the moment).
ID Allocation
Node ID: 70322184
Property ID: 362545374
Relationship ID: 84805115
Relationship Type ID: 49
We have server with 16vCPU and 48GB, and it's configured:
16GB Memory Heap (initial and max)
24GB Page Cache
During work period, we were monitoring Neo4j Server with Zabbix, but graphs are not promising. We were forced to restart servers every 2-3 month (max) since Old GC are going crazy (last night it was around 120 sec). Also, while we monitor server we noticed there is some Mixed GC (Young/Old generation space), but after few days it completely stops. And Old generation space just increase till it fill like 90% of Heap and after that Old CG kicks in.
I read a lot of documentation on how to tune G1GC, analyzing GC logs but no success. Here's some setup parts:
dbms.jvm.additional=-XX:MaxGCPauseMillis=750
dbms.jvm.additional=-XX:G1MixedGCLiveThresholdPercent=60
dbms.jvm.additional=-XX:G1HeapWastePercent=3
dbms.jvm.additional=-XX:G1MixedGCCountTarget=16
dbms.jvm.additional=-XX:+ParallelRefProcEnabled
I tried to tune "G1MixedGCLiveThresholdPercent", "G1HeapWastePercent" and "G1MixedGCCountTarget" but no success. For new setup I will enable:
dbms.jvm.additional=-XX:G1NewSizePercent=25
dbms.jvm.additional=-XX:G1MaxNewSizePercent=50
to try to force Young/Old ratio.
Anyone have any idea what we are missing here, since at the moment we are out of ideas. Also, does additional JVM setup actually affect Neo4j server or they are just useless?