Use Java Beans Basic Tuning Considerations

13-2 Oracle Fusion Middleware Performance and Tuning Guide

13.2.1 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. The following thread properties can be tuned: ■ Dispatcher Invoke Threads ■ Dispatcher Engine Threads ■ Dispatcher System Threads ■ Dispatcher Maximum Request Depth

13.2.1.1 Dispatcher Invoke Threads

The dspInvokeThreads 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.

13.2.1.2 Dispatcher Engine Threads

The dspEngineThreads 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.

13.2.1.3 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. Note: dspMinThreads, dspMaxThreads and dspInvokeAllocRatio configuration properties are deprecated in Oracle 11g. In addition, the invoke threads have their own pool in Oracle 11g so the dspInvokeAllocRatio is no longer required. Oracle BPEL Process Manager Performance Tuning 13-3 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.

13.2.1.4 Dispatcher Maximum Request Depth

The dspMaxRequestDepth 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.

13.2.2 Audit Level

The auditLevel property sets the audit trail logging level. This configuration property is applicable to both durable and transient processes. This property controls the amount of audit events that are logged by a process. Audit events result in more database inserts into the audit_trail table which may impact performance. Audit information is used only for viewing the state of the process from Oracle Enterprise Manager Console. Use the Off value if you do not want to store any audit information. Always choose the audit level according to your business requirements and use cases. For more information on setting the audit level, see Understanding the Order of Precedence for Audit Level Settings in Oracle Fusion Middleware Administrators Guide for Oracle SOA Suite. Note: Note that the minimum number of threads for each thread pool is 1. dspThreads can not be set to 0 or negative. Value Description Inherit Inherits the audit level from infrastructure level. Off No audit events activity execution information are persisted and no logging is performed; this can result in a slight performance boost for processing instances. Minimal All events are logged; however, no audit details variable content are logged. Error Logs only serious problems that require immediate attention from the administrator and are not caused by a bug in the product. Using this level can help performance. Production All events are logged. The audit details for assign activities are not logged; the details for all other activities are logged. Development All events are logged; all audit details for all activities are logged.