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