Hello Paul!
Greetings.
Your KPIs are looking good. Your GC throughput is 99.79%, Avg GC Pause time is 206ms and max GC pause time is 530ms, which are good metrics. However there is always room for optimization.
Above is your GC pause duration graph. Inorder to bring down your young GC pause time, you may try couple of things:
a. Currently you are using Parallel GC algorithm for young generation, where as for other generations you are using CMS. May be you can just try using CMS algorithm for all generations. You can do so by removing '-XX:+UseParNewGC'
b. YOu can also try one more thing. Currently young gen size is 1GB and old gen size is 2GB. Can you try reducing young gen size to may be 512mb? Currently you have set your '-XX:NewRatio' to 2. Instead if you can make it as 3 i.e. '-XX:NewRatio=3' young gen size will become 512mb. It has potential to reduce young gen pause time. It's because if young generation size is small, less number of objects has to be evicted from the memory. Thus, pause time can also get reduced.
c. I would also remove '-XX:MaxTenuringThreshold=6' so that objects will be promoted sooner to old generation.
Don't do all the 3 settings changes in one go. Do one change first, study the performance then continue to try other settings.
You may find this GC tuning & optimization video clip helpful.
Edit your Comment