Thursday, August 9, 2012

Red Samurai Performance Audit Tool - Runtime Diagnosis for ADF Applications

To tune ADF application, we need to know exactly what is the reason for performance bottleneck. In Red Samurai we are helping our customer to be happy with ADF. How we do that? Yes - hard quality work (and no bla bla talking) is one of the most important things. But also we use tools - one of such tools is in house developed ADF Runtime Performance Audit tool.

Before blaming ADF is slow, make sure to check the way data is retrieved from DB, also SQL execution performance. I agree, its not always easy to monitor DB/SQL performance for ADF applications. This is the main reason we have developed this tool.

Our tool splits into two parts - Audit Engine (6 KB JAR file) and Performance Audit Dashboard. Customer application needs to include only Audit Engine, the rest happens as magic - information about slow SQL starts to come to dashboard automatically. Tool is universal and runs in development, test and production environments.

Performance Audit Dashboard interface:

Main areas for performance bottleneck and tuning related to DB/SQL in ADF:

1. SQL time execution in DB. While SQL executes, ADF waits for response - we want as fast SQL execution as possible.

2. Duplicate SQL execution. Obviously we want to avoid duplicate SQL execution.

3. SQL count query execution. ADF invokes separate SQL count query to estimate rowset size, this may slow down performance for complex queries.

4. Resultset Fetch size. When fetching lots of records from DB, ADF is using more memory to create and maintain rowset, this potentially slows down application.

5. Passivation/Activation time. One of the slowest operations - need to monitor and avoid as much as possible.

Performance Audit Dashboard offers two charts for performance audit overview:

1. Type of Issues pie chart with selection in time

2. Monthly Issues tracking linear chart

List with issues displays:

1. Issue type
2. SQL execution time
3. Issue details
4. Issue date
5. Application/View Object name related to the issue
6. User name, ADF Web user who was triggering SQL from ADF application

Details section displays more detailed info, such as SQL query or complete info about large rowset fetch.

There is option to change audit parameters on the fly.

We are on track to innovate and improve ADF applications quality, this tool is newest addition to our other tools:

1. Red Samurai MDS Cleaner V2.0

2. JDeveloper 11g Extension to Validate ADF Code Quality

Red Samurai Performance Audit is available free of charge (existing/future Red Samurai customers).


Thirumalaisamy Thangavel said...

it will be so useful.. Can I get some link to download this?


Andrej Baranovskij said...

Hi Thiru,

Right now we distribute it for Red Samurai customers/future customers. No public availability yet.


Ivan Dikanev said...

Hi Andrejus,

If it's not a secret how do you intercept SQL statements issued by ADF? In the past I used such proxy jdbc driver tools as p6spy and log4jdbc. Do you use a similar tool or some kind of proprietary mechanism?


Andrej Baranovskij said...

Hi Ivan,

We are using native ADF BC API (View Object implementation classes), this allows to track natively in ADF BC query execution time (which usually is longer than JDBC execution time) - there is added time to construct rowset, etc. This allows to track ADF performance more realistically.


Anonymous said...

Is this available to public yet?

Andrej Baranovskij said...

Only to customers still.


Ramesh said...

You mean customers who buy this tool or customers for whom you build ADF applications?

Andrej Baranovskij said...

Those customers for whom we build ADF apps, this tool is installed as a bonus !


Constantine said...

Good day.
How to buy this tool separately?

Andrej Baranovskij said...

We give it for free, but only in those projects where we are involved. We dont sell it separately.


Vikas Modhale said...

Hi Andrejus,

As it not available to buy separately.

Can you give guild line how you implemented this.

As you use custom BC API ,
How you storing data?(file/MDS/DB directly).

and If its just simple logging , then any best mechanism to retrieve and store data.


Andrej Baranovskij said...

Hi Vikas,

I'm very sorry, but we are sharing this kind of information only with our customers.