Saturday, October 2, 2010

Web Application Profiling - Spring Insight

Are you writing Web Applications using Spring Framework? Have you ever thought what's going on under the hood? Why your application is responding so slowly? Why the snail outside your window is disappearing in the distance so fast while you still wait for your application response? You should :) and the Spring Insight can be very helpful with this task.

You should start with the tc Server Developer Edition which is in fact well known Apache Tomcat 6.0 on steroids ;). Then you should take a look at the Spring Insight - this tool is installed into tc Server as usual web application, and allows you to take a journey into your own application ;)

I'll put here only few screenshots of Spring Insight in the action, detailed information about installing and using tc Server along with the Spring Insight can be found on the Spring Source web pages.

Let's start ;)

When you click one of the bars on the chart you will see the details of request handling:

As you see on the screen request handling took 316 ms. Trace Detail section holds all methods which were executed during the request handling and all database queries which were performed. 

For each method/database call you can see the details like input parameters, SQL Query executed, or returned value (method only). Selecting request details will show you quick request summary along with request and response headers.

You may wonder why you see the database queries during the view rendering? As you know JPA's lazy loading defers loading the entities from database until they are used for the first time, and it happens during the view rendering. As you see on the above example, there are potential places for improvements (consider dropping lazy usage, use batch reading instead of one by one while fetching lazy entities).

Spring Insight offers you also some statistics about the used application resources - see Browse Resources at the top of page.

Of course you can see the details for each resource:

Summarizing this cartoon post :) - very interesting tool for all of the Spring Framework addicted developers - but in fact not only them - some parts of Spring Insight should be functional also for ordinary Servlet, or application written using some other framework. There is also possibility of writing your own Spring Insight plugins, so don't hesitate ;) use it and extend ;) - it is worth it 

No comments:

Post a Comment