How many times when we run the application under load, it becomes so difficult to figure out where the performance bottlenecks are?
Developers add lines of debugging code to measure the performance to pin point the problem. But you have no freaking clue where the bottleneck is.
One of the non-intrusive way of measuring and profiling code has been the use of Aspects. I had talked about aspects in my earlier post The wonderful world of Aspects.
Last month, Spring announced the release of Spring Insight 1.0.0.M3
Spring Insight has been developed as a lean framework that allows developers to deploy the module to their existing native application to an Spring Insight-enabled tc Server instance and immediately start seeing diagnostics. There is no requirement of additional DB to be setup or need to write any additional code.
Spring Insight captures application events known as traces. A trace represents a thread of execution. It is usually started by an HTTP request but can also be started by a background job. A trace contains operations. Each operation represents a significant point in the execution of the trace, for example, a JDBC query or transaction commit. Using this data, Spring Insight calculates summary information to lead you to the specifics of why your application is not performing.
Spring Insight uses AspectJ, which is based on bytecode weaving, dynamically instruments the applications at runtime. The current version of Spring Insight currently keeps its data in memory. It does not use an external database or write any data to disk. This means, any server restart wipes the slate clean. The Spring Insight uses sophisticated algorithms tries to keep the memory footprint low but still expects more memory (-Xmx) than a standard server.
The reporting is integrated with the Google Speed Tracer. Speed Tracer is available as a Chrome extension. Speed Tracer provides developers a full view into all the work performed in a web request – from CSS styling and view rendering to JDBC queries and JSP render times. Check out the Speed Tracer tutorial here
If you are developing using Spring libraries, then you can not afford to give a miss to Spring Insight