Watching the Java stack
Wily Introscope peers deeply into Java application performanceFollow @peterwayner
Most enterprise programmers know that the French playwright Jean-Paul Sartre was onto something when he wrote, “Hell is other people.” But they would tell you that hell is really other systems. A set of Web services, databases, and Web applications that work well on their own can slow to a crawl or even deadlock when they’re stitched together. It’s not enough to do a good job on the individual parts because the sum of the parts is something completely different.
Wily Technology’s Introscope system is meant to be a cure for this confusion or, to be more specific, a tool that might provide the understanding that leads to a cure. Introscope provides a collection of agents that gather data about all the actions in your application stack. If problems strike, you probe this data to find the troublemaking interactions. Wily calls this “Blame technology,” a pitch-perfect gag that illustrates how well the company understands the social landscape of the cubicle farms where teams of programmers toil.
Reporting for duty
The architecture is straightforward. The Enterprise Manager sits at the center collecting logging information from a collection of agents. Anyone who wants to monitor the applications can use the Workstation Explorer to make some sense of the logging data. It’s easy, for instance, to watch the time it takes to answer every SQL query. If one sticks out as slow, you drill down to examine the query itself.
The Explorer is a compact Swing application for all the information it offers. The raw information from the agents can be parsed, graphed, and watched for significant events using a collection of plug-in modules. The information can be graphed or connected to “stoplights” that display green or red to signal good or bad conditions. If some users are being frozen out of information, you drill down and try to isolate the chain of events.
If you want, you can create custom dashboards that allow you to arrange graphs, stoplights, and information for monitoring your applications. The graphical quality of these tools is perfectly adequate, but it might be nice to have some fancier graphics for impressing people who wear suits.
The Explorer relies on a collection of agents to gather the raw data. Many of the most common applications, such as BEA WebLogic, IBM WebSphere, and Oracle, come with standard agents that automatically gather information about the applications. They report high-level details about when requests arrive and when responses are sent back, as well as lower-level information about the memory usage, thread concurrency, and CPU load.
This information helps you locate the bottlenecks in applications. By watching thread concurrency, for instance, it’s possible to look for places where the application is stalling.
There are also more generic agents you can include with your applications. A JDBC agent, for instance, reports on the number of connections available, the response time, and the response size. There are generic tools for tracking most common Java enterprise tools such as servlets, JSPs, and entity beans and some, such as Struts, that are tuned to standard frameworks.
The collection of agents is well designed for the enterprise programmer, although the utility is tempered by the cost of recording information. The basic Struts tool, for instance, tracks the “average method invocation time” for the different Struts Actions. But if you want more details about the different methods, you’ve got to do a bit more work and enable additional gathering.