A Performance Tuning and Large Payloads

This appendix contains the following topics:

A.1 Settings for Performance Tuning

To improve performance, set memory arguments appropriately based on your requirements and system. Code clean-up, multithreading, and table indexing are major contributors to maximizing the use of available resources. Java performance tuning also helps in sharing the resources among the various processes based on the usage/need of the resource.

When using the large payload settings, the internal delivery channel must be the default channel or a JMS queue.

Changes to b2b-config.xml require a server restart. The syntax in various examples in this section reflect generic UNIX format.

The following settings improved Oracle B2B performance based on 2 GB of RAM on a 32-bit computer and 200 MB of B2B configuration data. When working in a Windows operating system with large payloads, a 64-bit server is recommended.

A.1.1 Memory Arguments

Memory arguments are captured in DOMAIN_HOME/bin/setSOADomainEnv.sh. Memory tuning applies to Oracle JRocket or SUN JVM.

For Oracle JRocket

export JAVA_VENDOR Oracle 
DEFAULT_MEM_ARGS="-Xms1024m -Xmx1024m"

For Sun JVM

export JAVA_VENDOR Sun
DEFAULT_MEM_ARGS="-Xms1024m -Xmx1024m"
if["$JAVA_VENDOR"!= "Oracle"];then
 DEFAULT_MEM_ARGS="$DEFAULT_MEM_ARGS -XX:CompileThreshold=100000 -XX:PermSize=256m -XX:MaxPermSize=256m"

-Xms and -Xmx can be increased up to 2 GB based on memory availability.

A.1.2 Heap Size Settings

Verify the heap size settings in the setSOADomain.sh script (see DEFAULT_MEM_ARGS) before starting any of the following servers in the WebLogic domain:

  • The SOA managed server

  • The WebLogic Admin Server

Using precise heap settings when starting the servers is necessary for B2B to process large payloads.

A.1.3 MDS Cache Size

To set the Metadata Service (MDS) instance cache size, add the following property and value to DOMAIN_HOME/config/soa-infra/configuration/b2b-config.xml.

<property>
 <name>b2b.mdsCache</name>
 <value>200000</value>
 <comment>MDS Instance cache size </comment>
</property> 

A ratio of 5:1 is recommended for the xmx-to-mdsCache values. For example, if the xmx size is 1024, maintain mdsCache at 200 MB.

A.1.4 Number of Threads

Changing the value of threadCount can improve Oracle B2B message processing. The recommended value depends on your system. For a 2 GB computer, a setting of 3 to 5 is recommended. The sleepTime property puts a thread to sleep after message processing. A setting between 10 and 1000 (milliseconds) is recommended.

Set these values in DOMAIN_HOME/config/soa-infra/configuration/b2b-config.xml as follows:

<property>
  <name>b2b.inboundProcess.threadCount</name>
  <value>5</value>
  <comment></comment>
</property>
<property>
  <name>b2b.inboundProcess.sleepTime</name>
  <value>10</value>
  <comment></comment>
</property>
<property>
  <name>b2b.outboundProcess.threadCount</name>
  <value>5</value>
  <comment></comment>
</property>
<property>
  <name>b2b.outboundProcess.sleepTime</name>
  <value>10</value>
  <comment></comment>
</property>
<property>
  <name>b2b.defaultProcess.threadCount</name>
  <value>5</value>
  <comment></comment>
</property>
<property>
  <name>b2b.defaultProcess.sleepTime</name>
  <value>10</value>
  <comment></comment>
</property> 

A.1.5 Stuck Thread Max Time

Changing the value of Stuck Thread Max Time can improve Oracle B2B message processing if a thread is stuck. This is the maximum amount of time that the server checks the number of seconds that a thread must be continually working before the server considers the thread stuck.

Only if you see a stuck thread exception should you change the Stuck Thread Max Time setting in Oracle WebLogic Server Administration Console. Increasing this number can degrade performance.

Navigate to Environment > Servers > soa_server_name > Configuration > Tuning. Set Stuck Thread Max Time, shown in Figure A-1, to a maximum of 1200. (The default value is 600 seconds.)

Figure A-1 Changing Stuck Thread Max Time

Description of Figure A-1 follows
Description of "Figure A-1 Changing Stuck Thread Max Time"

A.1.6 Tablespace

If you store more than an a 150 MG configuration, extend or add a data file to increase tablespace size as follows:

ALTER TABLESPACE sh_mds add DATAFILE 'sh_mds01.DBF' SIZE 100M autoextend on next 10M maxsize unlimited;
ALTER TABLESPACE sh_ias_temp add TEMPFILE 'sh_ias_temp01.DBF' SIZE 100M autoextend on next 10M maxsize unlimited;

A.1.7 JTA Settings

On slower Windows computers (2 to 4 GB, 32-bit), the JTA timeout must be increased for Oracle B2B. Use the Oracle WebLogic Server Administration Console to increase the JTA transaction timeout to a higher number, depending on your environment. In some situations, a setting of 350 seconds is sufficient.

A.2 Handling Large Payloads

Oracle B2B can handle large payloads through the SOA Infrastructure and JMS internal queues.

A.2.1 Introduction to Large Payload Support

Inbound Setup

Figure A-2 shows the properties to set for inbound cases. Go to Administration > Configuration > Performance.

Figure A-2 Large Payload Size

Description of Figure A-2 follows
Description of "Figure A-2 Large Payload Size"

If a composite is deployed to handle the large payload, this is the only configuration needed. If B2B is not delivering the payload to a composite, set Use JMS Queue to true, as shown in Figure A-3. Go to Administration > Configuration > Generic.

With Use JMS Queue set to true, the payload is delivered to B2B_IN_QUEUE, a JMS-based queue.

Outbound Setup

Figure A-4 shows the properties to set for the outbound case.

Figure A-4 Large Payload Directory

Description of Figure A-4 follows
Description of "Figure A-4 Large Payload Directory"

Notes

  1. If you are doing large payload testing, set the logPayload property on the Administration > Configuration tab to false.

  2. If you are doing large payload testing, set showpayload to false to avoid listing the payload in reports.

  3. Increase the maximum heap size by using -Xmx2048m.

  4. Increase the database tablespace size for soadatasource to have autoextend on and increase the tablespace file size maximum limit.

    alter database datafile '/scratch/$user/auto_work/db230/oradata/db230/SH_soainfra.dbf' autoextend on next 10M maxsize 4096M

  5. Set the transaction timeout in Oracle WebLogic Administration Server:

    • Weblogic Console Services -> JTA Timeout Seconds=720 seconds

    • Weblogic Console Services -> JDBC->DataSources->SOADataSource - increase XA timeout to 120-180 seconds

  6. If Oracle B2B is used alone (without the SOA Infrastructure), the JTA timeout can be set in b2b-config.xml by using the advanced property oracle.tip.b2b.jtaTimeout.

  7. For an outbound SOA composite, always select the Use file streaming option for the File Adapter.

    Description of bb_lrg6.gif follows
    Description of the illustration bb_lrg6.gif

A.2.2 Large Payloads and 32-Bit Windows PCs

On a 32 bit Windows computer, the payload size limit is 50 MB. This is because the heap size cannot be set to more than 1536m due to Windows-specific limits. Java VM throws an out-of-memory exception.