I want to do some performance monitoring on our JVMs.
What would be interesting to monitor besides the obvious things I already have on my list ?
- JVM Free/Total memory
- GC rate (how many per minute)
- Duration of GC
For heavily multithreaded apps, thread-related metrics are useful for both performance and availability monitoring. That way you can monitor for excessive contention and queuing, potential deadlocks, that kind of thing.
It can also be useful to see how thread metrics correlate with CPU and memory metrics. E.g., if you're seeing frequent full GCs, it would be useful to know that one of the threads has been running much longer than what you'd normally expect. It may be stuck in an infinite loop and eating up heap.
Here are some ideas:
Your list covers the essentials. Some additional stuff: