Analyze application failures


+

Search Tips   |   Advanced Search

 

Application failures can be caused by a number of coding problems, each of which investigate using the data collection and analysis techniques and tools available. Typical application failures include stoppages, when the application unexpectedly terminates, and lockups, when the application becomes unresponsive as it, for example, enters an infinite loop or waits for an event that will never happen.

Tracking such problems can involve trial-and-error as you collect and analyze data in various ways. You might find our own way that works best.

Try the following steps:

  1. Import the application log files into the Log and Trace Analyzer.

  2. Correlate them and examine them for high-severity records.

  3. If you still have not found the source of the problem, collect response time breakdown data.

    When creating a new profiling configuration, select the J2EE Performance Analysis profiling set on the Overview page under the Monitor page.

  4. Correlate and analyze the data with a Host, Process, or Thread interaction diagram, or other advanced profiling tools to determine the specific problematic computer, process or thread.

  5. Next, if you have not found the source of the problem, collect memory-level data from on the problem computer, process, or thread identified in the previous step. See Collecting real-time response time breakdown data. When creating a new profiling configuration, select the Basic Memory Analysis or one of the other memory-related analysis sets on the Overview page under the Monitor page.

  6. Analyze with the profiling tools for identifying thread bottlenecks.

  7. In the case of a lockup, you might not see any actual errors logged. Use interaction diagrams, statistical views, and thread analysis tools to find the problem. For example, if the problem is an endless loop, the UML2 sequence diagrams will show you repeating sequences of calls, and statistical tables will show methods that take a long time. If the problem is a deadlock, thread analysis tools will show that threads you expect to be working are actually waiting for something that is never going to happen.