On 3/31/2014 9:03 AM, elisabeth benoit wrote:
We use JVisualVM. The CPU usage is very high (90%), but the GC activity
shows less than 0.01% average activity. Plus the heap usage stays low
(below 4G while the max heap size is 16G).
Do you have a different tool to suggest to check the GC? Do you think there
is something else me might not see?
You can't get actual usable GC pause information from jvisualvm or
jconsole, only totals and averages. Those tools seem to be geared more
towards seeing problems when your heap is too small.
To see real pause information, you can turn on GC logging and then run
the log through a tool like GCLogViewer to see a graph of your
collection pauses. What I used to initially see the problem was a
program called jHiccup, which will show *ANY* pause, not just those
caused by garbage collection. GC is almost always the reason there is a
pause, though.
http://www.azulsystems.com/jHiccup
https://code.google.com/p/gclogviewer/
You can still have long GC pauses even if your max heap isn't reached.
Have you provided any GC-related options to your JVM at all? With a
heap size of 4GB and a max heap of 16GB, I can absolutely guarantee that
you will have pause problems unless you provide the JVM with a number of
tuning options. I was frequently having pauses as high as 10 to 12
seconds on an 8GB heap, even after I switched to CMS. Further tuning
was required. These options made the situation a lot better, but I
think they can probably be improved:
http://wiki.apache.org/solr/ShawnHeisey#GC_Tuning
More expanded info, which references the link above:
http://wiki.apache.org/solr/SolrPerformanceProblems#GC_pause_problems
Thanks,
Shawn