PacktLib: Oracle SOA Suite 11g Performance Tuning Cookbook

Oracle SOA Suite Performance Tuning Cookbook


About the Authors

About the Reviewers


Identifying Problems


Identifying new size problems with jstat

Identifying permanent generation problems with jstat

Monitoring garbage collection with jstat

Identifying locking issues with jstack

Identifying performance problems with jstack

Identifying performance problems using VisualVM on HotSpot

Identifying performance problems using JRMC on JRockit

Using JRockit flight recorder to identify problems

Monitoring JDBC connections with the WebLogic console

Identifying slow-running database queries

Identifying slow-running components with the Enterprise Manager

Monitoring Oracle SOA Suite


Installing the Hyperic server

Installing Hyperic agents

Configuring Hyperic to monitor SOA Suite 11g

Monitoring the SOA Suite server availability

Monitoring the JVM memory usage

Monitoring the platform CPU usage

Monitoring the data source usage

Monitoring open sockets

Monitoring committed transactions

Configuring alerts in Hyperic

Monitoring the system using the DMS servlet

Performance Testing


Installing Apache JMeter

Creating a web service test using JMeter

Running JMeter on multiple servers

Checking responses in JMeter tests

Monitoring SOA Suite while testing

Recording user web sessions with JMeter

Designing advanced load tests

Running performance tests from the Cloud

JVM Memory


Increasing the JVM heap size

Setting Xmx and Xms to the same value

Setting the size of the Permanent Generation heap

Calculating the total memory used by your application

Viewing the memory used using JRMC for JRockit

Viewing the memory used using VisualVM for HotSpot

Setting the size of the thread stack

JVM Garbage Collection Tuning


Setting the new size

Setting the survivor ratio

Choosing a garbage collection algorithm in HotSpot

Choosing a garbage collection algorithm in JRockit

Turning on verbose garbage collection

Tuning to reduce the number of full garbage collections

Disabling the RMI garbage collector

Disabling explicit GC

Platform Tuning


Tuning global transaction timeouts

Increasing the HTTP accept backlog

Reducing the server logging level

Finding out which JVM you are using

Using large pages in Linux

Increasing the number of file descriptors in Linux

Tuning the SOA Suite EJB timeouts

Upgrading to a newer JVM

Setting the Linux kernel swappiness to low

Using the Oracle JRockit JVM

Running your domain in the production mode

Creating a file

Data Sources and JMS


Setting the data source pool sizes

Configuring data source testing

Configuring data source growing and shrinking

Setting data source connection timeouts

Tuning database XA timeouts

Tuning connections in the native EIS database adapter

Configuring the WebLogic thread pool

Using JMS file persistence

Tuning JMS connection factories

BPEL and BPMN Engine Tuning


Tuning the dispatcher invoke threads

Tuning the dispatcher engine threads

Tuning the dispatcher system threads

Disabling BPEL monitors and sensors

Reducing the audit level

Changing a BPEL process to be transient

Reducing the completion persist level

Disabling persistence on invocation

Setting the audit store policy

Reducing audit trail size threshold

Increasing large document threshold

Reducing SOA infra log levels

Purging data from the BPEL store

Ensuring automatic database statistics gathering is enabled

Tuning Oracle database parameters

Tuning the Oracle database

Mediator and BAM


Setting Mediator Parallel Metrics Level

Setting Mediator Parallel Worker Threads

Setting Mediator Parallel Maximum Rows Retrieved

Setting Parallel Locker Thread Sleep

Using batched delivery in the BAM Adapter

Rules and Human Workflow


Disabling automatic release timers globally

Choosing the correct workflow service client

Preventing looping and inefficient rule execution

Tuning rule execution

SOA Application Design


Using BPEL process parallelization

Using non-blocking service invocations in BPEL flows

Turning off payload validation and composite state monitoring

Designing BPEL processes to reduce persistence

Using parallel routing rules in Mediator components

Setting HTTP timeouts for external services

Tuning BPEL adapter properties

High Performance Configuration


Configuring a cluster of SOA Suite servers

Configuring an OHS load balancer

Tuning for deployment on a virtualized infrastructure

Using distributed JMS destinations in a cluster

Using JMS bridges to improve the enqueue speed

Choosing deployment hardware