Hi All
We have a large 24g Gemfire cache (v.6.5.1) thats running on JDK (64 bit 1.6.0_37).
The cache itself contains only 1 region with disk persistence enabled. The entry is String=List<Object> with a total of ~400k entries. The value List<Object> contains a mixture of String,Long and Doubles and is of size 275.
This cache region receives around a million operations a day (puts/updates/deletes) inlcuding the occassional OQL (for e.g. select k.get(0) from /DATA k where k.get(10) ='dataSetId' and k.get(9) != someLong)
What we have noticed is that there are occasionally very long (2-10 sec) ParNew GC pauses. We have profiled the cache but dont see any memory leaks.
The best combination of JVM flags that works for us so far are: (these were set after many rounds of testing/profiling)
-Xms24g -Xmx24g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSScavengeBeforeRemark -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:CMSIncrementalSafetyFactor=75 -XX:CMSWaitDuration=300000 -XX:NewRatio=8 -XX:SurvivorRatio=8 -Xss384k -XX:+UseNUMA -XX:+UseStringCache -XX:+UseCompressedStrings -XX:+OptimizeStringConcat -XX:+UseCompressedOops -XX:+UseTLAB
I understand this is a pretty broad question, but does anyone in the community have any suggestions on how we can improve GC pause times/cache performance.
Thanks