As a WebSphere administrator, you should be aware of taking thread dumps and tools 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
[root@localhost 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=8.5.5.0,type=JVM,mbeanIdentifier=JVM,cell=localhostCell01,spec=1.0
wsadmin>$AdminControl invoke $jvm dumpThreads

This will generate a thread dump and will be available under the profile path.

2. Using kill

  • Find the JVM process ID using ps command
  • Execute kill -3 $PID
# kill -3 $PID

You will find the dump in the profile path.

3. Using the WebSphere Administrative Console

  • Login into DMGR Console
  • Navigate to Troubleshooting at the left side
  • Select the JVM and click on “Java core.”

generate-thread-dump-was

Once you have the thread dump, you can use the following tools to analyze them.

Analyzing WebSphere Thread Dumps

Analyzing dumps are always challenging, and following FREE tools will help you.

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 the following to start the GUI.

java -jar jca457.jar

ibm-tda

  • Click on File >> Open Thread Dumps
  • Browse the folder and select the dump you wish to analyze

It will take a 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
  • Method

All are available under the “Analysis” menu. A quick look at thread status analysis

tda-status

So go through the analysis you are looking for have fun with IBM TDA.

So now, you should be able to generate and analyze the thread dumps for application troubleshooting. There is more analyzer explained here.