WebLogic Integration Solutions Best Practices FAQ
The following sections provide answers to questions about designing and tuning high-performance WebLogic Integration applications. It contains the following topics:
This section answers the following questions:
Stateless processes are significantly faster than stateful processes.
Process controls are faster than service controls.
You get approximately the same performance when starting a process using the process control or message broker, but it is significantly faster to receive a process control callback than a message broker subscription. The message broker subscription filter mechanism uses a database to map the filter values to process instances. Process control callbacks are routed directly to the process instances.
By default, the branches of a parallel node are transactionally isolated. You can override this behavior by setting the continueTransaction
property in the source for each parallel element as follows:
<parallel continueTransaction="true">
For more information, see "Continue Transaction Attribute on Parallel Nodes" in Business Process in WebLogic Integration 8.1 Release Notes.
Timer messages (messages set with a delivery time in the future) show up as "pending messages" in the WebLogic Server console.
For stateful processes, turn off maximum conversation lifetime if you're not using it:
* @jws:conversation-lifetime max-age="0s"
For more information on the conversation lifetime feature, see "@jws:conversation-lifetime Annotation" in Java Web Service Annotations in the "WebLogic Workshop Reference" in WebLogic Workshop Help.
The default timeout period for a transaction is 300 seconds (5 minutes). You can increase the amount of elapsed time before a transaction times out by using one of the following approaches:
transaction-timeout
element of wlw-config.xml.
This will change the timeout period for all transactions in your application. For more information, see wlw-config.xml Configuration File in the "Configuration File Reference" in "WebLogic Workshop Reference" in the WebLogic Workshop Help.trans-timeout-seconds
value for the AsyncDispatcher MDB in weblogic-ejb-jar.xml
. This will change the timeout period for transactions processed by the AsyncDispatcher MDB only. For more information, see "trans-timeout-seconds" in "2.0 weblogic-ejb-jar.xml in WebLogic Server 8.1" in the weblogic-ejb-jar.xml Deployment Descriptor Reference in Programming WebLogic Enterprise JavaBeans. For recovery considerations regarding transaction timeout periods, see What should I check to make sure my WebLogic Integration application is configured properly for recovery?
This section answers the following questions:
For optimum performance, use the following flags when starting WebLogic Server:
production noiterativedev nodebug notestconsole
Note: These flags should be set by default when using a generated production domain, but not when using a development domain.
WebLogic Integration projects map onto J2EE resources. For background information on exactly how they map, see WebLogic Workshop Internals at the following location:
http://dev2dev.bea.com/products/wlworkshop81/articles/wlw_internals.jsp
For background information on tuning in general, see WebLogic Server Performance and Tuning at the following location:
http://download.oracle.com/docs/cd/E13222_01/wls/docs81/perform/index.html
The primary EJB pools your can tune within a WebLogic Integration project are the project beans: the SyncDispatcher
Stateless Session Bean (SLSB) pool and the AsyncDispatcher
Message-Driven Bean (MDB) pool. These pools exist for every WebLogic Integration project in an application.
All synchronous requests are routed through the SyncDispatcher
; all asynchronous (buffered) communication is routed through the AsyncDispatcher
.
There are two ways to configure the pool size of these beans:
weblogic-ejb-jar.xml
file to contain a dispatch-as
element with the name of the thread pool to use. For more information, see "dispatch-policy" in "2.0 weblogic-ejb-jar.xml Elements" in the weblogic-ejb-jar.xml Deployment Descriptor Reference in Programming WebLogic Enterprise JavaBeans.
max-beans-in-free-pool
for the project beans. For more information about configuring MDB pool size, see "Setting Performance-Related weblogic-ejb-jar.xml Parameters" in Tuning WebLogic Server EJBs in WebLogic Server Performance and Tuning.
Yes. The JMS event generator by default has max-beans-in-free-pool
set to 5
. You can often set this value higher and improve performance.
For more information, see "Setting Performance-Related weblogic-ejb-jar.xml Parameters" in Tuning WebLogic Server EJBs in WebLogic Server Performance and Tuning.
If you ever plan to use versioning with a long-running business process, version your process from the beginning before deploying your application in production mode. Otherwise, you must let non-versioned instances run to completion before deploying the new versioned process.
For more information, see "Managing Process Versions" in Process Configuration in Managing WebLogic Integration Solutions.
Minimize process tracking levels as much as possible to optimize performance. Set tracking to none
as the default, and track selected JPDs as needed.
For information on how to configure tracking levels, see "Managing Process Tracking Data" in "About Process Configuration" in Process Configuration in Managing WebLogic Integration Solutions.
Yes. You should run the archiver process during non-peak hours to clean the process monitor table for stateful processes.
For information on how to configure the archiver process, see "Managing Process Tracking Data" in Process Configuration in Managing WebLogic Integration Solutions.
Edit common/lib/workshopLogCfg.xml
and change all occurrences of info
to warn
.
Each application will have a different threshold for the size of documents it is more efficient to pass by reference (using the document store) rather than inline. In general, the more trips a document makes, the better it is to use the document store. You configure the size of files passed by reference by setting the value of the weblogic.wli.DocumentMaxInlineSize
parameter in the WebLogic Integration application domain's wli-config.properties
file.
Note: When using the document store, a two-phase commit related race condition in some cases may cause the following message to appear in the log: SQLException in retrievData()
. In this situation, you can set the value of weblogic.wli.DocumentMaxInlineSize
to a large number so that all documents will be passed inline.
If you have a fast disk subsystem or a battery backed caching controller, file-based persistence can be quite a bit faster than JDBC.
The following table shows parameters of key resources used by your WebLogic Integration application that you should monitor in the WebLogic Server Administration Console, and actions you should take if a problem condition arises.
Choose the Configure Execute Queue command on the Advanced Options portion of the Configuration |
If the value of For more information, see "Tuning the Default Execute Queue Threads" in Tuning WebLogic Server in WebLogic Server Performance and Tuning. |
||
Increase the For more information, see "How JDBC Connection Pools Enhance Performance" in Tuning WebLogic Server in WebLogic Server Performance and Tuning. |
|||
Expand the JMS |
Increase the pool size for the AsyncDispatcher. For more information, see How do I tune WebLogic Integration Applications?. |
||
Create a thread execute queue named For more information, see Tuning WebLogic Server in WebLogic Server Performance and Tuning. |
|||
Create a thread execute queue named For more information, see Tuning WebLogic Server in WebLogic Server Performance and Tuning. |
If you have deployed your application as an exploded EAR, you can increase the amount of time that elapses before a transaction times out by increasing the value of trans-timeout-seconds
in the WebLogic Server Administration Console. You should also change this value in the source for your WebLogic Integration application so that the value of trans-timeout-seconds
is not reset to its default value when you redeploy the application.
If you have not deployed your application as an exploded EAR, trans-timeout-seconds
is not accessible through the WebLogic Server Administration Console. You must increase the value of trans-timeout-seconds
in your application, and then redeploy the application with the increased timeout value.
For information on how to change the value of trans-timeout-seconds
, see "Edit Deployment Descriptors" in Implementing Enterprise Java Beans in Programming WebLogic Enterprise JavaBeans.
The top causes of memory leaks are:
For more information, see What flags should I use when I start WebLogic Server to maximize performance?.
To reduce JMS timer messages, see How can I increase the transaction timeout period?
ShrinkingEnabled
in the JDBC connection pool. There's an occasional memory leak associated with ShrinkingEnabled
. Domains generated in WebLogic Integration 8.1 SP1 may have ShrinkingEnabled
enabled by default.For more information about the ShrinkingEnabled
attribute, see "Attributes" in JDBCConnectionPool in WebLogic Server Configuration Reference.