Why do you need InfraRED for your project? Here are some of the key differentiations of InfraRED that makes it attractive for you to use it.
InfraRED provides statistics about various aspects of an application?s performance (Method timing, JDBC and SQL statistics, HTTP Response). It provides an end-to-end view to help in correlating all these metrics that are collected at different layers of the application. For example, you can use JBDC logging, p6spy or even Hibernate SQL logging to look at what SQL queries are executed, but InfraRED can give you a lot more information about those SQL queries and can also correlate these queries to the APIs in your application from which they were executed.
InfraRED has been designed and tuned so as to have very little overhead and our goal has always been to make it usable in production environments. The overhead of running an application with InfraRED is less than 5%, for a typical enterprise application. Many applications do not have any performance monitoring tools in production systems and go through a lot of trouble to debug performance problems. InfraRED is designed to help you in such situations. Of course, most of its features are also very useful in performance labs, and even in QA and development environments.
InfraRED is non-intrusive to the overall development of the application i.e. the developer need not edit any of his/her source files to monitor an application with InfraRED.
InfraRED can be easily tuned to collect statistics at different levels of detail. The overhead incurred increases with the level of detail sought. On a production server InfraRED can be used to collect summary data with minimal overhead. On a developer system more detailed information can be collected to help debugging. The summary information would help isolate the problem to a certain area of code or a specific operation. More detailed analysis can be done on a developer machine to pinpoint the exact cause of the problem.
A large portion of performance related problems in a J2EE application arise in the persistence layer. They could be due to sub optimal SQL queries or improper use of the JDBC API. InfraRED has a special emphasis on the persistence layer. The metrics grouped under JDBC statistics is provided as a single page vital information, top n worst performing SQL queries, top n most frequently executed SQL queries, prepare to execute ratio etc. It is also easy to find out from which application API the JDBC call was made from.
InfraRED provides an easy to use Web UI for analyzing the metrics. The first page shows the time spent in each layer of the application. On identifying the problematic layer, you can drill down further to find the problematic methods. You can further drill down and trace the execution of a method along with all the SQL calls that were executed.
We have built InfraRED based on our practical experiences with building large-scale mission-critical enterprise applications for Fortune 500 companies.
Because of its easy setup and low overhead, you can use it in all environments. While its use in performance lab and production environments is clear, we usually use it even in DEV and QA environments. Early detection of performance problems is an important factor in building robust, well-performing systems. From that perspective, we have built features that make it easy for developers to identify problems on their own instead of waiting for a separate performance team to tell them where the problem is. One really cool developer feature is the ?Last Call? view that allows a developer to see the performance statistics (including all SQL queries) for the last few web requests in a single click. (There is no need to hunt and open log files, to search for the relevant data inside the log file or to ask DBAs to provide information about bad SQL queries.)