As a WebSphere administrator, you should be aware of taking thread dumps and tool to analyze them. Thread dumps are often needed to diagnose the application performance issue like deadlocks, hung threads, and bottlenecks in Java threads.
Taking Thread Dumps in WebSphere
It’s recommended to take multiple thread dumps in 5-8 seconds. You can use any of the following methods to generate it.
1. Using wsadmin.sh
- Login into WAS Server
- Go to profile and bin folder
- Execute wsadmin.sh file
[[email protected] bin]# ./wsadmin.sh WASX7209I: Connected to process "dmgr" on node localhostCellManager01 using SOAP connector; The type of process is: DeploymentManager WASX7029I: For help, enter: "$Help help" wsadmin>
- Set JVM name in a variable
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]
Note: server1 is for example. Change this to your actual JVM name.
wsadmin>set jvm [$AdminControl completeObjectName type=JVM,process=server1,*] WebSphere:name=JVM,process=server1,platform=proxy,node=localhostNode01,j2eeType=JVM,J2EEServer=server1,version=220.127.116.11,type=JVM,mbeanIdentifier=JVM,cell=localhostCell01,spec=1.0 wsadmin>$AdminControl invoke $jvm dumpThreads
This will generate thread dump and will be available under profile path.
2. Using kill
- Find JVM process ID using ps command
- Execute kill -3 $PID
# kill -3 $PID
You will find the dump in profile path.
3. Using WebSphere Administrative Console
- Login into DMGR Console
- Navigate to Troubleshooting at left side
- Select the JVM and click on “Java core.”
Once you have the thread dump, you can use following tools to analyze them.
Analysing WebSphere Thread Dumps
Analysing dumps are always challenging and following FREE tools will help you.
1. IBM Thread Dump Analyzer (TDA)
Using IBM TDA, you can identify hangs, deadlocks, and bottlenecks in Java threads.
You can download IBM TDA from here. It’s just the jar file and once downloaded, you can execute following to start the GUI.
java -jar jca457.jar
- Click on File >> Open Thread Dumps
- Browse the folder and select the dump you wish to analyze
It will take few seconds, and you are all set to do the following analysis
- CPU usage
- Memory segment
- User process resources limit
- Command line argument
- Environment variable
- Shared class cache
- Native memory
- Thread status
All are available under “Analysis” menu. A quick look at thread status analysis
So go through the analysis you are looking for have fun with IBM TDA.
Another popular analyzer is a samurai, which you can download from here and execute as follows.
java –jar samurai.jar
So now you should be able to generate and analyze the thread dumps for application troubleshooting. There is one more online thread dump analyzer which you may try.
You may also be interested in learning about Java memory management.