I recently recorded several short screencasts illustrating various approaches to find out where time is being spent as client requests flow through WebLogic Server. WebLogic Server has a very powerful diagnostics and monitoring sub-system called WebLogic Diagnostic Framework (WLDF) that has many knobs and dials. However, many customers I work with just want to get started with the basics and not learn all of the expert nuances of WLDF upfront. The latest WLS 11gR1 PS2 release (aka WLS 10.3.3) includes new features that surface WLDF in a way that is much easier to use – particularly to track request timings.
Perhaps the most exciting feature introduced in WLS 10.3.3 is the improved integration with JRockit. As of R28 of JRockit, a default recording can always be kept on – similar to how a black-box works in an airplane. So if you have a crash, you can look back into the black box and see what happened. Marcus Hirt from the JRockit team has some more detail. But this isn’t just for low-level JVM data, WLS 10.3.3 also adds the ability to publish WebLogic events to these JRockit recordings with a very simple “volume” dial in the console or WLST. No knowledge of deployment descriptors or WLDF is required. So if you think that a particular web page is slow, simply configure the volume to either low, medium or high and get a recording of some requests and it’s easy to see timings inside and around each request. The documentation has a lot more detail, but these two screencasts provide an idea of how easy it is to get going with these new capabilities in WLS 10.3.3 and R28 of JRockit. Keep in mind that this is an extremely low overhead approach that is designed with production use in mind.
This feature visually shows individual requests as they flow through various WLS subsystems such as Servlets, EJBs, JDBC, JMS, WebServices, JTA, etc and tracks the timings around each part of the request as well as the total time. So if a particular web page is slow, you can use this feature to instrument an application and find out where the time is being spent. This is more of a lowest-common-denominator approach than JRockit Flight Recorder in that it works for all supported JVM’s and not just the most recent JRockit R28 release. It also works with older releases of WebLogic down to 9.2 if you use the older console extension applet. The Request Performance console view introduced in 10.3.3 is a replacement for part of the diagnostics applet from previous releases. This recording uses an application that leverages the weblogic-diagnostics.xml deployment descriptor to specify which subsystems to trace timings for, but instead of creating a deployment descriptor it’s also possible to use the WLS Console –> Deployments –> <Your Application> –> Configuration –> Instrumentation tab to add monitors from the instrumentation library with the Console user interface. Under the covers the console will use a deployment plan behind the visual tooling and relieves you of the burden of creating a deployment descriptor.