| Measurement |
Description |
Measurement
Unit |
Interpretation |
| Total_current_threads |
Indicates the total number of threads (including daemon and non-daemon threads). |
Number |
|
| Live_threads |
Indicates the current number of threads in a runnable state. |
Number |
The detailed diagnosis of this measure, if enabled, provides the name of the threads, the CPU usage by the threads, the time for which the thread was in a blocked state, waiting state, etc. |
| Blocked_threads |
Indicates the number of threads that are currently in a blocked state. |
Number |
If a thread is trying to take a lock (to enter a synchronized block), but the lock is already held by another thread, then such a thread is called a blocked thread.
The detailed diagnosis of this measure, if enabled, provides in-depth information related to the blocked threads. |
| Waiting_threads |
Indicates the number of threads that are currently in a waiting state. |
Number |
A thread is said to be in a Waiting state if the thread enters a synchronized block, tries to take a lock that is already held by another thread, and hence, waits till the other thread notifies that it has released the lock.
Ideally, the value of this measure should be low. A very high value could be indicative of excessive waiting activity on the JVM. You can use the detailed diagnosis of this measure, if enabled, to figure out which threads are currently in the waiting state.
While waiting, the Java application program does no productive work and its ability to complete the task-at-hand is degraded. A certain amount of waiting may be acceptable for Java application programs. However, when the amount of time spent waiting becomes excessive or if the number of times that waits occur exceeds a reasonable amount, the Java application program may not be programmed correctly to take advantage of the available resources. When this happens, the delay caused by the waiting Java application programs elongates the response time experienced by an end user. An enterprise may use Java application programs to perform various functions. Delays based on abnormal degradation consume employee time and may be costly to corporations. |
| Timed_waiting_threads |
Indicates the number of threads in a TIMED_WAITING state. |
Number |
When a thread is in the TIMED_WAITING state, it implies that the thread is waiting for another thread to do something, but will give up after a specified time out period.
To view the details of threads in the TIMED_WAITING state, use the detailed diagnosis of this measure, if enabled. |
| Low_cpu_threads |
Indicates the number of threads that are currently consuming CPU lower than the value configured in the PCT LOW CPU UTIL THREADS text box. |
Number |
|
| Medium_cpu_threads |
Indicates the number of threads that are currently consuming CPU that is higher than the value configured in the PCT LOW CPU UTIL THREADS text box and is lower than or equal to the value specified in the PCT MEDIUM CPU UTIL THREADS text box. |
Number |
|
| High_cpu_threads |
Indicates the number of threads that are currently consuming CPU that is either greater than the percentage configured in the PCT MEDIUM CPU UTIL THREADS or lesser than or equal to the value configured in the PCT HIGH CPU UTIL THREADS text box. |
Number |
Ideally, the value of this measure should be very low. A high value is indicative of a resource contention at the JVM. Under such circumstances, you might want to identify the resource-hungry threads. To know which threads are consuming excessive CPU, use the detailed diagnosis of this measure. |
| Peak_threads |
Indicates the highest number of live threads since JVM started. |
Number |
|
| Total_started_threads |
Indicates the total number of threads started (including daemon, non-daemon, and terminated) since JVM started. |
Number |
|
| Total_daemon_threads |
Indicates the current number of live daemon threads. |
Number |
|
| Deadlock_threads |
Indicates the current number of deadlocked threads. |
Number |
Ideally, this value should be 0. A high value is a cause for concern, as it indicates that many threads are blocking one another causing the application performance to suffer. The detailed diagnosis of this measure, if enabled, lists the deadlocked threads and their resource usage. |
| Per_low_cpu_threads |
Indicates the average CPU usage of those threads that are consuming CPU lower than the value configured in the PCT MEDIUM CPU UTIL THREADS text box. |
Percent |
To know which threads are consuming low CPU, use the detailed diagnosis of the Low_cpu_threads measure. |
| Per_medium_cpu_threads |
Indicates the average CPU usage of those threads that are consuming CPU that is higher than the value configured in the PCT MEDIMUM CPU UTIL THREADS text box and is lower than or equal to the value specified in the PCT HIGH CPU UTIL THREADS text box. |
Percent |
To know which threads are consuming medium CPU, use the detailed diagnosis of the Medium_cpu_threads measure. |
| Per_high_cpu_threads |
Indicates the average CPU usage of those threads that are consuming CPU that is greater than the percentage configured in the PCT HIGH CPU UTIL THREADS text box. |
Percent |
To know which threads are consuming high CPU, use the detailed diagnosis of the High_cpu_threads measure.
If one/more threads are consuming high CPU, then you need to figure out what CPU-intensive activity these threads were engaged in - RMI activity? were they processing web/HTTP requests? was it internal activity such as garbage collection? or any other activity? To figure this out, you can compare the values of all metrics grouped under the head, CPU usage by thread type. These metrics are, namely - Per_cpu_http_threads, Per_cpu_rmi_threads, Per_cpu_other_threads, and Per_cpu_gc_threads. |
| Per_cpu_http_threads |
Indicates the percentage of CPU resources utilized by threads that are serving Web/HTTP requests. |
Percent |
Compare the value of this measure with that of the Per_cpu_rmi_threads, Per_cpu_other_threads, and Per_cpu_gc_threads measures to determine where threads spent maximum CPU resources - in RMI activity? processing web/HTTP requests? internal activity such as garbage collection? or any other activity? |
| Per_cpu_rmi_threads |
Indicates the percentage of CPU resources utilized by threads engaged in RMI activity. |
Percent |
RMI threads typically enable an object on a JVM to invoke methods on an object on another JVM - eg., enabling JMX connection to a JVM.
Compare the value of this measure with that of the Per_cpu_http_threads, Per_cpu_other_threads, and Per_cpu_gc_threads measures to determine where threads spent maximum CPU resources - in RMI activity? processing web/HTTP requests? internal activity such as garbage collection? or any other activity? |
| Per_cpu_gc_threads |
Indicates the percentage of CPU resources utilized by threads engaged in garbage collection and other JVM internal activity. |
Percent |
Compare the value of this measure with that of the Per_cpu_http_threads, Per_cpu_rmi_threads and Per_cpu_other_threads measures to determine where threads spent maximum CPU resources - in RMI activity? processing web/HTTP requests? internal activity such as garbage collection? or any other activity? |
| Per_cpu_other_threads |
Indicates the percentage of CPU resources utilized by threads involved in JVM activities other than the ones mentioned above - i.e., other than web/HTTP request processing, RMI activity, GC and internal activity. |
Percent |
Compare the value of this measure with that of the Per_cpu_http_threads, Per_cpu_rmi_threads, and Per_cpu_gc_threads measures to determine where threads spent maximum CPU resources - in RMI activity? processing web/HTTP requests? internal activity such as garbage collection? or any other activity? |
While viewing the measures reported by this test, you can also view the resource usage details and the stack trace information for all the threads, by clicking on the STACK TRACE link in the Measurements panel.