Oracle Fusion Middleware, Oracle Enterprise Manager, and several other technologies internally uses WebLogic application server. In a WebLogic server, all incoming requests are handled by execute threads in the thread pool. Based on the activity of these threads, WebLogic server classifies each thread in the thread pool. WebLogic server does this activity classification, which is on top of the thread state classification (WAITING, TIMED_WAITING, RUNNABLE, NEW, TERMINATED) made by the JVM. This article intends to give you a brief overview of various thread activity classification:
An execute thread is classified as STUCK when the thread is stuck working on a request for more than the configured stuck thread maximum time (i.e. “StuckThreadMaxTime” parameter). Default value for “StuckThreadMaxTime” is 10 minutes.
Note that it is possible that some of your threads are doing legitimate work for over 10 minutes with no issues. If you have such threads then you should consider placing them in another work manager with proper setting for the “StuckThreadMaxTime” parameter.
We are seeing two types of definitions for HOGGER threads in the WebLogic documentation. I gave both the definitions below. Both definitions are more or less same but with a minor conflict among them.
a) An execute thread which is being held by a request right now is classified as HOGGER. These threads will either be declared as stuck after the configured timeout or will return to the pool before that.
b) An execute thread is classified as HOGGER, when thread takes much more than the normal execution time, as automatically observed by the scheduler
Threads that are eligible to process incoming request are classified as ACTIVE threads. When thread demand goes up, WebLogic will start promoting threads from Standby to Active state which will enable them to process future client requests
Threads that are waiting to be marked eligible to process incoming requests are classified as STANDBY Threads. These threads are kept in the Standby pool. Threads that are not needed to handle the present workload are designated as standby and added to the standby pool. These threads are activated when more threads are needed. These threads are created and visible from the JVM Thread Dump but not available yet to process a client request
These are the threads which don’t have any work assigned to it are classified as IDLE.