Oracle SOA 11g 11.1.1.6 Performance Tuning of BPEL Processes:BPEL Threading Model
When the dispatcher must schedule a dispatch message for execution, it can enqueue the message into a thread pool. Each dispatch set can contain a thread pool (java.util.concurrent.ThreadPoolExecutor). The BPEL thread pool implementation notifies the threads when a message has been enqueued and ensures the appropriate number of threads are instantiated in the pool.
Dispatcher System Threads
The
dspSystemThreads
property specifies the total number of threads allocated to process system dispatcher messages. System dispatcher messages are general clean-up tasks that are typically processed quickly by the server (for example, releasing stateful message beans back to the pool).
Typically, only a small number of threads are required to handle the number of system dispatch messages generated during run time.
The minimum number of threads for this thread pool is 1 and it cannot be set to 0 a or negative number.
The default value is
2
. Any value less than 1 thread is changed to the default.Dispatcher Invoke Threads
ThedspInvokeThreads
property specifies the total number of threads allocated to process invocation dispatcher messages. Invocation dispatcher messages are generated for each payload received and are meant to instantiate a new instance.If the majority of requests processed by the engine are instance invocations (as opposed to instance callbacks), greater performance may be achieved by increasing the number of invocation threads. Higher thread counts may cause greater CPU utilization due to higher context switching costs.
The minimum number of threads for this thread pool is 1 and it cannot be set to 0 a or negative number.
The default value is 20 threads. Any value less than 1 thread is changed to the default.
Dispatcher Engine Threads
ThedspEngineThreads
property specifies the total number of threads allocated to process engine dispatcher messages. Engine dispatcher messages are generated whenever an activity must be processed asynchronously. If the majority of processes deployed are durable with a large number of dehydration points (mid-process receive, onMessage, onAlarm, and wait activities), greater performance may be achieved by increasing the number of engine threads.Note that higher thread counts can cause greater CPU utilization due to higher context switching costs.
The minimum number of threads for this thread pool is 1 and it cannot be set to 0 a or negative number.
The default value is 30 threads. Any value less than 1 thread is changed to the default.
Dispatcher Maximum Request Depth
ThedspMaxRequestDepth
property sets the maximum number of in-memory activities to process within the same request. After processing an activity request, Oracle BPEL Process Manager attempts to process as many subsequent activities as possible without jeopardizing the validity of the request. Once the activity processing chain has reached this depth, the instance is dehydrated and the next activity is performed in a separate transaction.If the request depth is too large, the total request time can exceed the application server transaction time out limit.This process is applicable to durable processes.
The default value is 600 activities.