Oracle Application Server
Response time is basically sum of process time and wait time. All process spend most of their time waiting for a resources to get released. Resources such as memory, database-connections, etc. To improve performance, we should reduce the overall wait time. One primary resource is database connections. One way to reuse and manage database connections is to use the JNDI and connections pools properly. Connection Pools are connections that are reserved by the application server to a database and thereby reduces the time to wait for a new connections to be made to the database. One good practice to ensure that you always use the jndi is, when you use a database adapter in your BPEL do not enter the database connection information in the WSDL (apart from your jndi name). If you enter the database connection information and your jndi information, it will default to the connection parameters if your jndi is invalid. You should also manage the Database Connection Timeouts and inactivity connection timeout to manage the database connections in the connection pool.
Another thing to do would be to increase Java Heap and PermGen Space for the OC4J instance. This increases the overall resources avaliable to the JVM process. In oracle application server, you can have multiple OC4J instances. Unless you have a strong reason to put all your processes in the same instance, it is a good practice to have your processes spread-out over multiple instances. Each OC4J instances has its own set of resources (connection pools, heap, httpd connections, perm gen space…). Breaking them apart will improve the overall performance of your SOA environment.
Oracle BPEL Console
From the BPEL Console side, there are a few settings that can be done to keep the dehydration store clean. For a production environment, typically you should just hold the log level to ‘ERROR’. This makes the production logs more usable and clean from everyday event logs. BPEL Console also keeps the audit trail of all the events of every bpel. This is not necessary in a production environment, keeping the audit trail to ‘production’ is enough. Increasing the ‘BPELServerDataSource’ (connection pool to dehydration store) connection pool would also make a positive different in its performance.
This blog just outlines some of the changes that can be done in Oracle SOA Environment to increase your overall SOA system performance. We’ll be happy to help review and make these actual changes.