The hang detection option for WebSphere® Application
Server is turned on by default. You can configure a hang detection
policy to accommodate your applications and environment so that potential
hangs can be reported, providing earlier detection of failing servers.
When a hung thread is detected, WebSphere Application
Server notifies you so that you can troubleshoot the problem.
Before you begin
A common error in Java™ Platform,
Enterprise Edition (Java EE)
applications is a hung thread. A hung thread can result from a simple
software defect (such as an infinite loop) or a more complex cause
(for example, a resource deadlock). System resources, such as CPU
time, might be consumed by this hung transaction when threads run
unbounded code paths, such as when the code is running in an infinite
loop. Alternately, a system can become unresponsive even though all
resources are idle, as in a deadlock scenario. Unless a user or a
monitoring tool reports the problem, the system may remain in this
degraded state indefinitely.
Using the hang detection policy,
you can specify a time that is too long for a unit of work to complete.
The thread monitor checks all managed threads in the system (for example,
web container threads and object request broker (ORB) threads) . Unmanaged
threads, which are threads created by applications, are not monitored.
For more information read Hung threads in Java Platform, Enterprise Edition applications.
About this task
The thread hang detection option is enabled by default.
To adjust the hang detection policy values, or to disable hang detection
completely:
Procedure
- From the administrative console, click Servers > Application
Servers > server_name
- Under Server Infrastructure, click Administration > Custom
Properties
- Click New.
- Add the following properties:
Information |
Description |
Name |
com.ibm.websphere.threadmonitor.interval |
Value |
The frequency, in seconds, at which managed threads in the
selected application server will be interrogated. |
Default |
180 seconds (three minutes) |
Information |
Description |
Name |
com.ibm.websphere.threadmonitor.threshold |
Value |
The length of time, in seconds, in which a thread can be
active before it is considered hung. Any thread that is detected
as active for longer than this length of time is reported as hung. |
Default |
600 seconds (ten minutes) |
Information |
Description |
Name |
com.ibm.websphere.threadmonitor.false.alarm.threshold |
Value |
The number of times (T) that false alarms can occur before
automatically increasing the threshold. It is possible that a thread
that is reported as hung eventually completes its work, resulting
in a false alarm. A large number of these events indicates that the
threshhold value is too small. The hang detection facility can automatically
respond to this situation: For every T false alarms, the threshold
T is increased by a factor of 1.5. Set the value to zero (or less)
to disable the automatic adjustment. |
Default |
100 |
Information |
Description |
Name |
com.ibm.websphere.threadmonitor.dump.java |
Value |
This property calls the dumpThreads function. Set to true to execute the dumpThreads function
when a hung thread is detected and a WSVR0605W message is printed. The threads section of the
javacore dump can be analyzed to determine what the reported thread and other related threads are
doing.
Set to an integer value in the range 1 through Integer.MAX_VALUE to cause the dumpThreads
function to be executed when a hung thread is detected and a WSVR0605W message is printed. The
integer value indicates the maximum number of times dumpThreads will be executed. Note: To turn off
WSVR0605W messages, set com.ibm.websphere.threadmonitor.interval=0 .
By default, the dumpThreads function creates a javacore dump. See the
topic Dumping threads in server processes using scripting for information about how to
disable the creation of this dump.
|
Default |
false (0) |
Information |
Description |
Name |
com.ibm.websphere.threadmonitor.dump.java.track |
Value |
This property specifies the number of times the monitor calls the dumpThreads function while a
thread remains hung.
Set this property to an integer value in the range 2 through the value of
com.ibm.websphere.threadmonitor.dump.java. This integer value indicates the
maximum number of times the dumpThreads function is run to track a hung thread. For example, setting
a value of 2 causes the thread monitor to run the dumpThreads function at
most twice for a hung thread. It runs once when the thread is initially detected as hung, and once
again if the thread remains hung during the next thread monitor interval.
This property can only be used in conjunction with the
com.ibm.websphere.threadmonitor.dump.java property and has no effect otherwise.
|
Default |
0 the number of times the monitor runs the dumpThreads
function |
- Optional: If you want to monitor the activity
of threads on which system alarms execute, add the following JVM generic
arguments to the server settings.
Information |
Description |
Name |
-Dcom.ibm.websphere.alarmthreadmonitor.generate.javacore |
Value |
Set to any value to cause a javacore dump to be created when
an hung system alarm thread is detected. The threads section of the
javacore dump can be analyzed to determine what the reported thread
and other related threads are doing. |
Default |
Unset |
Information |
Description |
Name |
-Dcom.ibm.websphere.alarmthreadmonitor.checkinterval.millis |
Value |
The frequency, in milliseconds, at which system alarm threads
are interrogated. Set the value to zero to disable system alarm hung
thread detection. The maximum interval is 600000 (10 minutes). |
Default |
10000 (10 seconds) |
Information |
Description |
Name |
-Dcom.ibm.websphere.alarmthreadmonitor.threshold.millis |
Value |
Set to any value integer between 10000 and 600000 (10 minutes).
This argument is used to specify the length of time, in milliseconds,
that a system alarm thread can be active before it is considered non-responsive.
Any system alarm thread that is detected as inactive for longer than
this length of time is reported as hung. |
Default |
10000 (10 seconds) |
To add these arguments to the server settings, complete
the following actions:
- Under Server Infrastructure on the server settings page
in the administrative console, click .
- Select .
- Add the arguments to the JVM generic arguments section.
- Click Apply.
- Click OK.
- Save the changes.
- Restart the Application Server for the changes to take
effect.