Best Practices for WLI Application Life Cycle

     Previous  Next    Open TOC in new window  Open Index in new window  View as PDF - New Window  Get Adobe Reader - New Window
Content starts here

WLI Performance Tips and Application Recovery

 


Performance Tips

The following sections provides tips about designing and tuning high-performance Oracle WebLogic Integration applications. It contains the following topics:

Design-Time Performance Tips

This section provides the following design time performance tips:

Processes, Controls, and Callback Methods

Best Performance From Parallel Nodes in Business Processes

By default, the branches of a parallel node are transactionally isolated. To improve performance, you can override this behavior by setting the continueTransaction property in the source for each parallel element as follows:

<parallel continueTransaction="true">

Pending Messages in JMS Queues

Timer messages (messages set with a delivery time in the future) show up as “pending messages” in the Oracle WebLogic Server console.

Removing Pending JMS Timer Messages

For stateful processes, turn off maximum conversation lifetime if you are not using it:

weblogic.jws.Conversational

For more information on the conversation lifetime feature, see “@jws:conversation-lifetime Annotation” in Java Web Service Annotations in Oracle WebLogic Web Services Reference.

Increasing the Transaction Timeout Period

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:

For recovery considerations regarding transaction timeout periods, see Configuring Oracle WebLogic Integration Application for Recovery.

Run-Time Tuning Tips

This section provides run-time tuning tips:

Using Flags to Start Oracle WebLogic Server and Maximize Performance

For optimum performance, use the following flags when starting Oracle 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.

Tuning Oracle WebLogic Integration Applications

Oracle WebLogic Integration projects map onto J2EE resources. The primary EJB pools you can tune within a Oracle 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 Oracle 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:

For background information on tuning in general, see Oracle WebLogic Server Performance and Tuning.

Configuring max-beans-in-free-pool for the JMS Event Generator

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 Oracle WebLogic Server EJBs in Oracle WebLogic Server Performance and Tuning.

Versioning for a Stateful Business Process

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 Oracle WebLogic Integration Solutions.

Setting Process Tracking Levels to Optimize Performance

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 Oracle WebLogic Integration Solutions.

Running the Archiver When Process Tracking Levels are set to None

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 Oracle WebLogic Integration Solutions.

Disabling Information Web Services Messages

Edit <domain-home>/apacheLog4jCfg.xml and change all occurrences of info to warn.

Using the Document Store With the Oracle WebLogic Integration Application

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 Oracle 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.

Choosing the Best Persistence Model for JMS

If you have a fast disk subsystem or a battery backed caching controller, file-based persistence can be quite a bit faster than JDBC.

Monitoring Parameters for Oracle WebLogic Integration Application Running Under Load

The following table shows parameters of key resources used by your Oracle WebLogic Integration application that you should monitor in the Oracle WebLogic Server Administration Console, and actions you should take if a problem condition arises.

Table 6-1   Parameters to Monitor in Oracle WebLogic Integration Applications
Parameter
Where to Monitor
Problem Condition
Actions Required
JDBC connection pool usage
ServicesArrow symbolJDBC Data SourcesArrow symboleach data-sourceArrow symbolMonitoring.
Connections in use approaching maximum available.
Increase the MaxCapacity attribute of JDBCConnectionPool.
For more information, see “How JDBC Connection Pools Enhance Performance” in Tuning Oracle WebLogic Server in Oracle WebLogic Server Performance and Tuning.
JMS async queues for project beans
ServicesArrow symbolMessagingArrow symbolJMS ModulesArrow symbolconversational-jms.
Many messages in the queue.
Increase the pool size for the AsyncDispatcher.
wli.internal.tracking.buffer
ServicesArrow symbolMessagingArrow symbolJMS ModulesArrow symbolconversational-jms.
Many messages in the queue
Create a thread execute queue named wli.internal.
ProcessTracking
, and increase the number of threads in that pool.
For more information, see Tuning Oracle WebLogic Server in Oracle WebLogic Server Performance and Tuning.
wli.internal.instance.info.buffer
ServicesArrow symbolMessagingArrow symbolJMS ModulesArrow symbolconversational-jms.
Many messages in the queue
Create a thread execute queue named wli.internal.
ProcessTracking
, and increase the number of threads in that pool.
For more information, see Tuning Oracle WebLogic Server in Oracle WebLogic Server Performance and Tuning.

Reducing the Number of Transactions Timing out

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 Oracle WebLogic Server Administration Console. You should also change this value in the source for your Oracle 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 Oracle 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 Oracle WebLogic Enterprise JavaBeans.

Causes for Memory Leaks in Application

The top causes of memory leaks are:

 


WLI Application Recovery

The following section provides answers to questions about configuring Oracle WebLogic Integration applications for recovery. It contains the following topics:

Configuring Oracle WebLogic Integration Application for Recovery

You should check to make sure your Oracle WebLogic Integration application is configured in the following manner:

Starting the Recovery Process

It can take several minutes for in-doubt transactions to show up in Oracle. There may be a race if recovery has started prior to Oracle detecting the loss of the TM. Wait several minutes before starting recovery—either by restarting the server or by doing a JTA migration.

The Recovery process will fail if after initiating recovery, you check the Oracle dba_2pc_pending table and see a record associated with the failed server that has a timestamp prior to initiating recovery. Restart the server.


  Back to Top       Previous  Next