Different ways to take thread dumps in WebLogic Server

This article provides information about different ways on taking java thread dumps in a WebLogic Server environment.

Thread dumps are essential diagnosis information used to analyze and troubleshoot performance related issues such as server hangs, deadlocks, slow running, idle or stuck applications, slow database interactions etc…

Different ways to take thread dumps in WebLogic Server

WebLogic Server (WLS) and Java offer several ways to generate thread dumps. They are detailed below. It is always recommended to obtain the thread dumps by using operating system (OS) commands rather than by using Java classes or the Administration Console, because if the console is hanging, users won’t be able to connect to it to issue thread dumps.

Use operating system commands to get the thread dumps when WLS starts up from a command-line script:
On Windows OSes, thread dumps can be created by
+ — the thread dumps are generated in the server stdout
On POSIX-compliant platforms (e.g. Solaris and Linux), first identify the process ID (pid) using the command ps -ef | grep java, then run
kill -3 2>&1
Signal 3 is equivalent to SIGQUIT. Note that in Solaris, the thread dump is generated in the current shell, but in Linux, the thread dump is generated in the shell which started the java process specified by the pid.
This article provides information about different ways on taking java thread dumps in a WebLogic Server environment.

Thread dumps are essential diagnosis information used to analyze and troubleshoot performance related issues such as server hangs, deadlocks, slow running, idle or stuck applications, slow database interactions etc…

Different ways to take thread dumps in WebLogic Server

WebLogic Server (WLS) and Java offer several ways to generate thread dumps. They are detailed below. It is always recommended to obtain the thread dumps by using operating system (OS) commands rather than by using Java classes or the Administration Console, because if the console is hanging, users won’t be able to connect to it to issue thread dumps.

Use operating system commands to get the thread dumps when WLS starts up from a command-line script:
On Windows OSes, thread dumps can be created by
+ — the thread dumps are generated in the server stdout
On POSIX-compliant platforms (e.g. Solaris and Linux), first identify the process ID (pid) using the command ps -ef | grep java, then run
kill -3 2>&1
Signal 3 is equivalent to SIGQUIT. Note that in Solaris, the thread dump is generated in the current shell, but in Linux, the thread dump is generated in the shell which started the java process specified by the pid.
Using beasvc (up to WLS 10.3.5 included):
beasvc -dump -svcname:
service_name is the Windows service that is running the server instance (e.g. mydomain_myserver)
Using wlsve (from 10.3.6/12.1.1):
wlsve -dump -svcname:
Using weblogic.WLST:
setDomainEnv.cmd or setDomainEnv.sh depending on the OS
java weblogic.WLST
connect(““,”“,”t3://:“)
threadDump()
The thread dump will be generated in Thread_Dump_AdminServer.txt. Note 1274713.1 addresses WLST thread dumps in more detail with examples on how to define sleep time between each dump and number of dumps to take.
From a command line or shell, a thread dump can be generated via the following command (deprecated from WLS 9.0):
setDomainEnv.cmd or setDomainEnv.sh depending on the OS
java weblogic.Admin url –: -username -password THREAD_DUMP
The thread dump will be generated in the defined server stdout.
From the WLS Administration Console, a thread dump can be created by navigating to Servers -> -> Monitoring -> Threads -> Dump threads stack. This method could lead to truncated or incomplete thread dumps.
From the Services Administration Tools when WLS runs as a Windows Service, see Note 1348645.1
Java VisualVM can also be used to take thread dumps while applications are running, see http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/applications_local.html for more details
With jstack
jstack or jstack -l to print additional information about locks
From the JRockit command line:
jrcmd print_threads
From Java Mission Control with JDK 7:
jcmd Thread.print

Vinay

I am an Oracle ACE in Oracle ADF/Webcenter. Sr Java Consultant-working on Java/J2EE/Oracle ADF/Webcenter Portal/ content and Hibernate for several years. I'm an active member of the OTN JDeveloper/Webcenter forum. Passionate about learning new technologies. I am here to share my knowledge. Give your views and suggestion on [email protected] .

More Posts - Website

Follow Me:
TwitterLinkedInGoogle PlusYouTube