GC Allocation Failure after switching to EAR from WAR
We are trying to switch to ear from war on our Pega 718/JBoss EAP6.3 environment. I made the required changes and started the server. The prpc_j2ee14_jboss61JBM.ear gets deployed fine and I'm able to log in to the designer studio. But in the logs I see continuous messages about GC Allocation failure as below.
This was not occuring when I had the prweb.war deployed.
This has been working fine, and the heap usage is very much in control. But for some reason when I switched to using EAR instead of prweb.war, I started seeing the error messages that I pasted. Is this something to do with the compatibility?
not sure what you mean by compatibility. I would suggest you adjust XX:CMSInitiatingOccupancyFraction to 70 and report back if this makes difference. See this Oracle link for more details: Concurrent Mark Sweep (CMS) Collector
what version of jdk are you using? As a test, can you even lower XX:CMSInitiatingOccupancyFraction to 50 (which is very low) to see the allocation failure disappears? Also can you upload your verbose gc log?
G1 is supposed to replace CMS collector eventually, since you are using java 1.8, you probably want to go to that route. All our current recommendation is based on field experience with java 6/7, so it will take some time for pega to actually collect enough data for java 1.8 systems, both internally and externally. For example, Redhat would recommend the following to start with - but ultimately jvm tuning should be really based on your own applications with sufficient load tests with realistic use case scenarios.
FYI: this is from Redhat support knowledge base, several other things to try:
To account for large variances in application object allocation rates, test the -XX:CMSIncrementalSafetyFactor=NN (default 10) option to start the concurrent collection NN% sooner than the calculated time when -XX:+CMSIncrementalMode is used. For example: