Está en la página 1de 20

Oracle BPEL Process Manager

Performance Tuning

Tushar Jain
tusjain@gmail.com

Nov 2008 http://oracle-fusion-


middlware.blogspot.com/
Agenda

 Overview
 Process Level Performance Setting
 Domain Level Performance Setting
 Tuning OC4J for BPEL Server
 Tuning JVM for BPEL Server
 Tuning Dehydration Database for BPEL Server
 Takeaways

Copyright Tushar Jain, 2008 -2-


Overview
 Performance tuning is done at two levels
 Domain Level
 Process Level
 Process Types
 Transient processes
 Durable processes
 Invocation Types
 One-way invocation
 Two-way invocation

Copyright Tushar Jain, 2008 -3-


Overview contd…
 Invocation Types
Use One-Way Invocation Two-Way Invocation
WSDL file definition <operation name="oneway"> <input <operation name="twoway"> <input
message="in"/></operation> message="in"/> <output
message="out"/></operation>

Variable declarations in BPEL <receive operation="oneway" variable="in"/> <receive operation="twoway"


activities variable="in"/>...<reply
operation="twoway"
variable="out"/>

Through-delivery service The request is saved in the delivery service. The The request is delivered into Oracle BPEL
caller thread does not block until the Server and the targeted BPEL
message is delivered to the targeted instance. The caller thread is
instance. blocked until the response is ready.

Copyright Tushar Jain, 2008 -4-


Overview contd…
 Idempotent Activity
 An activity that can be retried (e.g. an assign activity or an invoke activity).
Oracle BPEL Server saves the instance after a nonidempotent activity.

 In-Flight Database Storage

 JTA Transactions for Two-way Invocations


 For two-way invocations, if the process being called is a transient process,
Oracle BPEL Server honors the caller's Java Transaction API (JTA) transaction. If
the process being called is a durable process, meaning an in-flight database
save can be occurring, Oracle BPEL Server creates a new transaction.

Copyright Tushar Jain, 2008 -5-


Overview contd…
 BPEL Threading Model

 Threading and Connection Pool Relationships

Copyright Tushar Jain, 2008 -6-


Process Level Performance Settings
 Process level performance properties are set in the
bpel.xml file. After modifying the settings the process
must be redeployed for the new settings to take
effect.
 Can also set these properties in the Deployment
Descriptor Properties window of Oracle JDeveloper

Copyright Tushar Jain, 2008 -7-


Process Level Performance Settings contd…
 List of Properties
 completionPersistLevel
 completionPersistPolicy
 idempotent
 inMemoryOptimization
 nonBlockingInvoke
 Tables Impacted By Instance Data Growth
 audit_details
 audit_trail
 cube_instance
 cube_scope
 dlv_message
 dlv_subscription
 document_ci_ref
 document_dlv_msg_ref
 invoke_message
 schema_md
 task
 work_item
 xml_document

Copyright Tushar Jain, 2008 -8-


Domain Level Performance Settings
 Domain level performance properties are set in the
SOA_Oracle_Home\bpel\domains\domain_name\confi
g\domain.xml file.
 Modify these from Oracle BPEL Control under Manage
BPEL Domain  Configuration. Oracle BPEL Control
checks the existing settings and any new settings
entered, and validates them without requiring a
restart.
 Can also set these properties directly but it requires
BPEL Server restart

Copyright Tushar Jain, 2008 -9-


Domain Level Performance Settings contd…
 Properties which have no impact on performance tuning
 cbCacheHighWatermark
 cbCacheLowWatermark
 cbCachePolicy
 cbCacheUnits
 instCacheUnits
 invCacheHighWatermark
 invCacheLowWatermark
 invCachePolicy
 invCacheUnits
 subCacheHighWatermark
 subCacheLowWatermark
 subCachePolicy
 subCacheUnits
 txDatasourceJndi
 datasourceJndi
 bpelcClasspath

Copyright Tushar Jain, 2008 - 10 -


Domain Level Performance Settings contd…
 Properties which have impact on performance tuning
 auditDetailThreshold
 auditLevel
 deliveryPersistPolicy - Do Not change from default. By Oracle
 dspAgentDelay
 dspInvokeAllocFactor
 dspMaxRequestDepth
 dspMaxThreads
 dspMinThreads
 expirationMaxRetry
 idempotentThreshold
 instanceKeyBlockSize
 instCacheHighWatermark - If you don’t understand JVM issues, do not change
 instCacheLowWatermark - If you don’t understand JVM issues, do not change
 instCachePolicy
 invokerQueueConnectionPoolMinSize
 largeDocumentThreshold
 minBPELWait
 optCacheOn
 optIdempotentRouting - Do Not change from default. By Oracle
 optSoapShortcut - Do Not change from default. By Oracle
 processCheckSecs
 relaxBpelAssignRules - Do Not change. It is depricated. By Oracle
 slowPerfThreshold
 statsLastN
 syncMaxWaitTime
 uddiLocation - Miniscule effect on performanance
 validateXML
 workerQueueConnectionPoolMinSize

Copyright Tushar Jain, 2008 - 11 -


Tuning OC4J for BPEL Server

 Tuning JTA Transaction Timeout for Oracle BPEL


Process Manager
 Oracle BPEL Server EJB Configuration
 WorkerBean
 InvokerBean
 Configuring Data Sources for Oracle BPEL

Copyright Tushar Jain, 2008 - 12 -


Tuning OC4J for BPEL Server contd…
 Tuning JTA Transaction Timeout for Oracle BPEL Process Manager
 BPEL Server uses JTA.
 The transaction timeout value is set by default to 60000 milliseconds in the
transaction-manager.xml file.
 The location of this file depends on the method by which you installed Oracle BPEL
Process Manager:
• For Oracle Application Server SOA installations, the file is located in SOA_Oracle_Home\j2ee\home\config.
• For Oracle BPEL Process Manager installations, the file is located in
SOA_Oracle_Home\bpel\system\appserver\oc4j\j2ee\home\config.
 Transaction rollback errors due to timeouts, especially when BPEL Server is under
stress. The timeout can happen for many reasons:
• Insufficient resources (e.g., not enough database connections in the connection pool, the server thread waits for 60
seconds and displays a timeout error, and so on).
• Large document manipulation (e.g., database writes of very large documents can take longer than 60 seconds).
 Change this value according to your process. The following example sets the timeout
to 120 seconds:
• <transaction-config timeout="120000" />
• If your process invokes partners that take longer than the specified timeout threshold, call them using a one-way
request or set the nonBlockingInvoke partner link property to true in the bpel.xml deployment descriptor file.

Copyright Tushar Jain, 2008 - 13 -


Tuning OC4J for BPEL Server contd…

 Oracle BPEL Server EJB Configuration


 To increase performance, Oracle recommends removing the
max-instances attribute for all of BPEL Server's EJBs in the
orion-ejb-jar.xml file. This enables the application server
to allocate more resources to heavily-used beans
 For the BPEL Process Manager for OracleAS Middle Tier
installation type, this file is located in
SOA_Oracle_Home\j2ee\home\application-
deployments\orabpel\ejb_ob_engine.

Copyright Tushar Jain, 2008 - 14 -


Tuning OC4J for BPEL Server contd…

 Oracle BPEL Server EJB Configuration


 WorkerBean
• Oracle BPEL Server uses an MDB called WorkerBean to perform
processing. so, it is important to allocate enough threads to this MDB.
Otherwise, resource utilization is not optimal.
• The following code from the orion-ejb-jar.xml file shows an allocation
of 80 threads.
 <message-driven-deployment name="WorkerBean" destination-
location="jms/collaxa/BPELWorkerQueue" connection-factory-
location="jms/collaxa/BPELWorkerQueueFactory" listener-threads=“80" min-
instances="100"> <ejb-ref-mapping
name="ejb/local/DispatcherLocalBean" /> .. ..</message-driven-
deployment>

Copyright Tushar Jain, 2008 - 15 -


Tuning OC4J for BPEL Server contd…
 Oracle BPEL Server EJB Configuration
 InvokerBean
• The invoker bean is used only for nonblocking invoke activities. If you set some
invokes to be nonblocking, increase the number of threads allocated to the
InvokerBean.
• The following orion-ejb-jar.xml code shows an allocation of 40 threads.
 <message-driven-deployment name="InvokerBean" destination-
location="jms/collaxa/BPELInvokerQueue" connection-factory-
location="jms/collaxa/BPELInvokerQueueFactory" listener-threads=“40" min-
instances="100"><ejb-ref-mapping name="ejb/local/ProcessManagerLocalBean" /> …
…</message-driven-deployment> Note:
• The sum of the InvokerBean and WorkerBean threads must be greater than or
equal to the value specified for the dspMaxThreads domain property in BPEL
Control under Manage BPEL Domain  Configuration.
• If multiple domains configured , add the dspMaxThreads property for all domains
and compare that sum to the MDB total thread count.

Copyright Tushar Jain, 2008 - 16 -


Tuning OC4J for BPEL Server contd…
 Configuring Data Sources for BPEL Server
 BPEL Server obtains database connections using an application server JTA data source. BPEL Server
by default is configured to use the Oracle Database Lite dehydration store. For stress testing and
production, Oracle recommends that use Oracle Database 10g. Oracle Database Lite packaged with
the default installation to ease the initial developer experience.
 For the Oracle BPEL Process Manager for OracleAS Middle Tier installation type, the data source entry
is located in the SOA_Oracle_Home\j2ee\home\config\data-sources.xml file.
 Be aware of the following issues when configuring the BPEL Server data source entry..
• When configuring the data source, ensure that the connection pool has enough free connections to serve Oracle BPEL Server.
• The connection pool size must be greater than or equal to the sum of the dspMaxThreads property value in BPEL Control. If
you have configured multiple domains, add all dspMaxThreads property values and compare that value with the data source's
max-connections value. The default max-connections value is unlimited.
 For Oracle Database 10g, the data source must also use the thin driver. For the Oracle9i Database,
Oracle Call Interface (OCI) performs slightly better.
 When database persistence is enabled, BPEL Server generally performs better with JDBC statement
caching enabled using the num-cached-statements attribute. Statement caching eliminates overhead
due to repeated cursor creation and repeated statement parsing and creation. Statement caching also
reduces the overhead of communication between the application server and the database server.

Copyright Tushar Jain, 2008 - 17 -


Tuning JVM for BPEL Server
 JVM parameters can have an impact BPEL Server performance. The major factors that impact
performance relate to the heap size. The heap size controls the amount of memory the JVM uses.
If your BPEL process instance runs on a dedicated host, set the heap size value as high as
possible.
 Another important heap configuration is the garbage collector's generational settings. The garbage
collector optimizes collection by classifying objects by how long they live. Most BPEL Server
objects are short-lived; thus they live in the Eden space. Oracle recommends sizing the Eden
space to be 60 to 70 percent of the total heap size.
 The JVM -Xmn setting startup option sets an explicit value for the Eden space size. Do the
following to set this option:
 Calculate the 60-70 percent value, based on the specified maximum heap size.
 Use the calculated value to set the JVM -Xmn command line parameter.
 Take the following steps to change JVM command line options:
 Navigate to the Home page for the OC4J instance.
 Click Administration.
 If necessary, expand the Properties section of the table by clicking the Expand icon. Then, click the
Go to Task icon in the Server Properties row.
 In the Command Line Options area, modify or change the appropriate command line options in the
Options table.
 Click Apply.
 Navigate to the Cluster Topology page, select the OC4J instance that you modified, and click Restart.
On the Confirmation page, click Yes.

Copyright Tushar Jain, 2008 - 18 -


Tuning Dehydration Database for BPEL Server

 BPEL Server performance is Parameter Name Sample Value

related to the dehydration LOG_BUFFER 1048576

store's capacity. Oracle


recommends the following: SHARED_POOL_SIZE 400M

 Moving the redo logs into a separate


RAID 1+0 disk JOB_QUEUE_PROCESSES 1

 Increasing the size of each redo log


file to a large value (for example, 1 DB_CACHE_SIZE 1000M
GB)
 Creating a separate database
tablespace for Oracle BPEL Server DB_FILE_MULTIBLOCK_READ_COUNT 8

 Database Parameters Impacting


Oracle BPEL Process Manager UNDO_RETENTION 0

Performance
PROCESSES 300

SESSION_CACHED_CURSORS 100

Copyright Tushar Jain, 2008 - 19 -


Takeaways
 BPEL Server can be tuned at two levels
 Domain Level
 Process Level

 Apart from BPEL Server following also play role in


performance tuning
 Application Server
 Dehydration Database
 JVM

 Hardware and Network assets have their own say in


performance tuning

Copyright Tushar Jain, 2008 - 20 -

También podría gustarte