Wednesday, September 24, 2008

Oracle Open World 2008 - AD4J

Okay, I just came out of a session called, "Diagnosing Java Application in Production" conducted by Oracle engineering team as well as a vendor specializing in health case industry.

Basically, what AD4J is trying to accomplish is that with minimal intervention and memory foot print, diagnosis of production issues such as memory leak and locks can be done.

The beauty of AD4J is that the application container or server don't have to restarted. Instead, you can just download AD4J agent application war file and deploy it to the same container where you want to diagnose the problem. In other words, the ADj4 agent is hot-deployable.

There are two types of AD4J agents; JVM agent and DB agent. JVM agent can be deployed through downloading the application from the AD4J console into the local environment, go to the application container console, and deploy the agent there.

DB agent is a slightly different. It has to be deployed on the box where the Database is running through a command line script.

What AD4J can do is as follows: (1) JVM activity monitoring, (2) DB activity monitoring, (3) Memory leak analysis, and (4) Root cause analysis. You can either use (i) real time snap shots to figure out what's going on right now or (ii) set the frequency of diagnosis so that you can compare (diff) the snapshots.

Like I said, there is no instrumentation required in order to run the AD4J. You don't have to restart the server. You can also trace the end user requests from the console and drill down further into more granular levels all the way up to object and method levels. You can know what object or what threads are causing issues such as deadlock or excessive memory consumption.

The way how to diagnose problems caused during communication between Portal and BPEL is to know what threads are involved and take the same steps to diagnose the problem.

WebLogic JRocket has a similar diagnostic tool but it works only in JRocket. However, AD4J can run on Sun's JVM, IBM's JVM, JRocket, and more.

You can also trace transactions and do thread dump comparison.

It's pretty powerful - even through it looks pretty boring...

No comments: