Professional Documents
Culture Documents
Ricky Marley,
Advisory Software Engineer,
WebSphere Application Server L2 Support Team Lead
Agenda
Background/Overview
What Data Should be Collected to Diagnose the
Problem
Javacores
- Basics
- Thread Analysis
- Lock Analysis
- Understanding Javacores from a WebSphere
AppServer
Summary
Questions?
The following link illustrates the various states in which you may find a
WebContainer thread:
http://www-1.ibm.com/support/docview.wss?uid=swg21137491
Monitor Pool Dump Lists the monitors that exist in the JVM at the time of the Java dump along with the
threads waiting for that particular monitor and the owner of each monitor. Monitors
can also be owned or not owned which will be indicated in the file. You can use this
section to identify any problems, such as, too many threads waiting on a monitor.
JVM System Similar to the monitor pool dump except that instead of listing any monitor, it lists all
Monitor Dump of the system monitors on the JVM for which the Java dump was captured.
Java Object The same as the monitor pool dump except that additional JVM internal information is
Monitor Dump provided.
Thread Identifiers Provides an association between the XM dump routine and the monitor pool dump.
You can use this section as a pointer to the location of the problem identified in the
monitor pool dump.
Analyzing Javacores
There are many ways to approach analyzing the Javacores to
determine the cause of a hang or performance degradation.
It is suggested to use the following methodology in the order listed:
Is there a deadlock?
Is there a monitor that has a long list of threads waiting for it?
What are the Servlet.Engine.Transport threads doing?
A. Are they idle waiting for requests?
B. Are they busy and many of them have the same or similar
stacks?
C. Are some or most of the threads busy and they all appear to
be doing something different?
Javacores can be analyzed manually or by using the ThreadAnalyzer
tool
(http://www-128.ibm.com/developerworks/websphere/downloads/thread_analyzer.html)
The TE02Servlet has captured the lock and has gone to sleep.
Until this thread releases the monitor, all threads waiting for this monitor will be
blocked
Review subsequent Javacores and monitor the state of this thread
Is CPU utilization high? High CPU will cause threads to contend for
CPU cycles
What does memory utilization look like?
What does VerboseGC data look like?
When GC runs, all other threads are suspended.
Summary
Identifying when a JVM is encountering a
performance degradation