Diagnosing Issues in Java Apps using Thermostat and Byteman.
Thermostat is a monitoring and management tool for Java deployments, allowing users to measure and monitor a host of different performance aspects of their Java applications. Available metrics range from raw CPU and memory usage to operation of the Garbage Collector and JIT compiler through to thread activity and method call/heap profiles. Thermostat provides a GUI view of activity of local and distributed JVMs in a live-view or, alternatively, offline for after-the-fact analysis.
What Thermostat cannot do on its own is track events and record statistics that are specific to a given Java application, at least not unless the application co-operates with it, for example by publishing JMX statistics that Thermostat can read, persist and display in its GUI. However, that's about to change thanks to work Thermostat developers have been doing to integrate Byteman into Thermostat.
Byteman is a tool which can be used to modify the behaviour of Java programs by injecting extra Java code almost anywhere in the program. You don't need to recompile your program or even prepare it in advance in order for this to work. You can specify changes to the program on the command line but, what is more amazing, you can actually use Byteman to change the way a program runs after startup while it is still running.
In this talk we will show how Thermostat can collect and visualize metrics with Byteman's help in order to better understand a specific performance issue in a Java application.