15 Tuning Oracle BPEL Process Manager

You can tune Oracle Business Process Execution Language (BPEL) Process Manager properties to optimize its performance at the composite, fabric, application, and server levels.

About BPEL Process Manager

Oracle BPEL Process Manager offers a comprehensive and easy-to-use infrastructure for creating, deploying, and managing BPEL business processes.

BPEL is the standard for assembling a set of discrete services into an end-to-end process flow, radically reducing the cost and complexity of process integration initiatives.

For an overview of Oracle BPEL Process Manager, see Oracle Business Process Execution Language (BPEL) Process Manager under Key Components in Understanding Oracle SOA Suite.

Tuning BPEL Parameters

You can tune BPEL parameters for optimal performance.

Tuning recommendations for BPEL parameters described here are likely or highly likely to improve performance. For descriptions of the other tuning parameters available for SOA Components, see the component-specific topics in this guide.

For detailed information on how to monitor, configure, and manage BPEL process service components and service engines, see Administering BPEL Process Service Components and Engines in Administering Oracle SOA Suite and Oracle Business Process Management Suite. Also see Using the BPEL Process Service Component in Developing SOA Applications with Oracle SOA Suite for how to use sensors to monitor select BPEL activities.

Tuning BPEL Engine

You can configure the performance tuning properties at the BPEL engine level by using the Enterprise Manager Fusion Middleware Control. For information on using Oracle Enterprise Manager Fusion Middleware Control to configure and monitor parameters, see Getting Started with Administering Oracle SOA Suite and Oracle BPM Suite and Accessing the System MBean Browser from the Component Property Pages in Administering Oracle SOA Suite and Oracle Business Process Management Suite.

Tuning BPEL Engine Parameters

Table 15-1 lists the essential tuning parameter that you can adjust to improve performance for the BPEL engine.

Table 15-1 Essential BPEL Engine Tuning

Parameter Problem Tuning Recommendation Trade-offs

auditLevel

Default: Inherit

You are experiencing low performance because of frequent database inserts into the audit_trail table.

Use the Off value to stop storing audit information.

Note that the auditLevel is set at the SOA Infrastructure level. See Configuring BPEL Process Service Engine Properties in Administering Oracle SOA Suite and Oracle Business Process Management Suite to see how to find and tune this parameter.

This property sets the audit trail logging level for both durable and transient processes.

If you turn this off, both business flow and payload tracking is disabled. You cannot view the state of BPEL processes in the Oracle Enterprise Manager Console.

Table 15-2 describes additional BPEL engine parameters that can be tuned for small performance improvements. Note that for most use cases, the default value is the recommended value.

Table 15-2 Other BPEL Engine Tuning Knobs

Parameter Description

SyncMaxWaitTime

Default: 45 seconds.

You can decrease this parameter's value to improve performance.

The SyncMaxWaitTime property sets the maximum time the process result receiver waits for a result before returning. This property is required for synchronous interactions and is applicable to transient processes.

See How To Specify Transaction Timeout Values in Developing SOA Applications with Oracle SOA Suite for instructions on how to find this property in the System MBean Browser of Oracle Enterprise Manager Fusion Middleware Control.

largedocumentthreshold

Default: 10000 (100 kilobytes).

You can decrease this parameter's value to improve performance.

This property sets the maximum size (in kilobytes) of a BPEL variable before it is stored in a separate table from the rest of the instance scope data. It is applicable to both durable and transient processes.

Large XML documents can slow down the performance if they are constantly used while processing an instance.

See Configuring BPEL Process Service Engine Properties in Administering Oracle SOA Suite and Oracle Business Process Management Suite to see how to find and tune this parameter in the Enterprise Manager Fusion Middleware Control.

validateXML

Default: False.

You should set this parameter to the default value of False to improve performance.

This property can make the Oracle BPEL Process Manager intercept nonschema-compliant payload data by validating incoming and outgoing XML documents. However, XML payload validation can slow performance.

You can find this parameter in the System MBean Browser. See Configuring BPEL Process Service Engine Properties in Administering Oracle SOA Suite and Oracle Business Process Management Suite for information on how to find advanced BPEL properties by using the More BPEL Configuration Properties... button from the BPEL Service Engine Properties page in Enterprise Manager Fusion Middleware Control.

InstanceKeyBlockSize

Default: 10000 keys.

You can increase the instance key block size to a value greater than the number of updates to the ci_id_range table to improve performance.

The InstanceKeyBlockSize property controls the instance ID range size. Oracle BPEL Server creates instance keys (a range of process instance IDs) in batches by using the value specified. After creating this range of in-memory IDs, the next range is updated and saved in the ci_id_range table.

See Configuring BPEL Process Service Engine Properties in Administering Oracle SOA Suite and Oracle Business Process Management Suite to see how to find and tune this parameter by using the System MBean Browser in Enterprise Manager Fusion Middleware Control.

Audit Level Threshold

Default: 10000.

You can decrease this parameter's value to improve performance.

This property sets the maximum size (in kilobytes) of an audit trail details string before it is stored separately from the audit trail. Strings larger than the threshold setting are stored in the audit_details table instead of the audit_trail table. In cases where the variable is very large, performance can be severely impacted by logging it to the audit trail.

See Configuring BPEL Process Service Engine Properties in Administering Oracle SOA Suite and Oracle Business Process Management Suite to see how to find and tune this parameter in Enterprise Manager Fusion Middleware Control.

Tuning BPEL in a Composite

You can tune BPEL properties for individual composites to improve performance. The BPEL properties set inside a composite affect the behavior of the component containing the BPEL process only. Each BPEL process can be created as a component of a composite.

BPEL composite properties can be modified in the composite.xml file by using JDeveloper, or in the System MBean Browser of Oracle Enterprise Manager Fusion Middleware Control. For in-depth descriptions of each property's function, see Deployment Descriptor Properties in Developing SOA Applications with Oracle SOA Suite.

The BPEL tuning considerations listed in Table 15-3 may not be applicable to all BPEL deployments. Always consult your own use case scenarios to determine if these configurations should be used in your deployment. See How to Define Deployment Descriptor Properties in the Property Inspector in Developing SOA Applications with Oracle SOA Suite for information on how to find and edit the parameters listed below.

Table 15-3 Essential BPEL in a Composite Tuning

Parameter Problem Tuning Recommendation Trade-offs

OneWayDeliveryPolicy

Default: async.persist

Slow performance because resources are being used to persist delivery messages.

Set value to async.cache. Incoming delivery messages for durable processes are kept only in the in-memory cache.

By default, incoming requests are saved in the delivery service database table dlv_message.

This setting has a high risk of losing messages or overloading the system. It also changes the threading model for adapter.

Audit Policy

Default: All activities

Slow performance because every activity is being audited.

Audit only key activities.

Lower level activities do not have an audit trail.

inMemoryOptimization

Default: False

Slow performance because the completionPersistPolicy parameter has been activated at the BPEL component level, causing the BPEL server to dehydrate either all or some instances.

Set value to False to tell the Oracle BPEL Server that this process is a transient process and dehydration is not required.

No dehydration means that activities in the instance are lost if the system crashes.

Table 15-4 describes additional BPEL parameters that can be tuned for small performance improvements, but in most cases, the default value is the recommended value. For in-depth descriptions of each property's function, see Properties for the partnerLinkBinding Deployment Descriptors in Developing SOA Applications with Oracle SOA Suite.

Table 15-4 Other BPEL in a Composite Tuning Knobs

Parameter Description

idempotent

Default: True

An idempotent activity is an activity that can be retried. Keeping this parameter's value as True allows idempotent activities by preventing the BPEL server from dehydrating immediately after a failed activity.

This parameter is configured in a partner link at runtime in BPEL.

validateXML

Default: False

False means that the system does not validate all XML messages during a receive activity.

This parameter is configured in a partner link at runtime in BPEL.

Using Other Tuning Strategies

You can locate the Oracle BPEL Process Manager tables that are impacted by instance data growth and purge them for optimal performance.

Identifying Tables Impacted By Instance Data Growth

Instance data occupies space in Oracle BPEL Process Manager schema tables. Data growth from auditing and dehydration can have a significant impact on database performance and throughput.

You can use Table 15-5 to locate tables that may be affected by instance data growth. See Monitoring Space Usage, Hardware Resources, and Database Performance in Administering Oracle SOA Suite and Oracle Business Process Management Suite for advice on how to monitor performance for the following database tables:

Table 15-5 Oracle BPEL Process Manager Tables Impacted by Instance Data Growth

Table Name Table Description

audit_trail

Stores the audit trail for instances. The audit trail viewed in Oracle BPEL Control is created from an XML document. As an instance is processed, each activity writes events to the audit trail as XML.

audit_details

Stores audit details that can be logged through the API. Activities such as an assign activity logs the variables as audit details by default.

Audit details are separated from the audit_trail table due to their large size. If the size of a detail is larger than the value specified for this property, it is placed in this table. Otherwise, it is placed in the audit_trail table.

cube_instance

Stores process instance metadata (for example, the instance creation date, current state, title, and process identifier)

cube_scope

Stores the scope data for an instance (for example, all variables declared in the BPEL flow and some internal objects that help route logic throughout the flow).

dlv_message

Stores incoming (invocation) and callback messages upon receipt. This table only stores the metadata for a message (for example, current state, process identifier, and receive date).

dlv_subscription

Stores delivery subscriptions for an instance. Whenever an instance expects a message from a partner (for example, the receive or onMessage activity) a subscription is written out for that specific receive activity.

document_ci_ref

Stores cube instance references to the data stored in the xml_document table.

document_dlv_msg_ref

Stores references to dlv_message documents stored in the xml_document table.

wftask

Stores tasks created for an instance. The TaskManager process keeps its current state in this table.

work_item

Stores activities created by an instance. All activities in a BPEL flow have a work_item table. This table includes the metadata for the activity (current state, label, and expiration date (used by wait activities)).

xml_document

Stores all large objects in the system (for example, dlv_message documents). This table stores the data as binary large objects (BLOBs). Separating the document storage from the metadata enables the metadata to change frequently without being impacted by the size of the documents.

Headers_properties

Stores headers and properties information.

When you have determined which tables are causing slow performance, you can purge them. See Understanding Growth Management Challenges and Testing Strategies in Administering Oracle SOA Suite and Oracle Business Process Management Suite for more information on managing database growth.