Greetings,
Chris' presentation on monitoring Tomcat is really nice work. I found that
quite useful.
Taking it one step further, could I request some recommendations on how we
might profile Java code running inside Tomcat? Often, I am stuck with
finding out why an application is slow. It could be a consistent,
progressive or a sudden problem. These applications do not expose metrics
via MBeans. Say, for e.g., a vendor application which has been heavily
customized in-house.
Some metrics that I find useful during these times are things like
concurrent invocations, stall counts on components, call-stack,
response-rate etc.
Java Melody has a nice built-in dashboard of metrics. Co-relating metrics
like that is powerful and helps isolate relatively easy problems. I find
that the metrics skim the surface of more involved problems.
In Tomcat, is there a way to go deeper into the performance of the code for
root-cause analysis and isolate a section of the code or a flow in the code
for troubleshooting? How would one go about getting to that place? Let's
say, there is no budget for purchasing tools in that space. I find Chris'
example on writing filters to map to URL patterns for response-time metrics
relevant. I would also like stall counts, concurrent invocations etc.
Greatly appreciate your thoughts and opinions.
Thanks,
-Shanti