14
Oracle SOA Suite Performance Tuning Cookbook Matt Brasier Nicholas Wright Chapter No. 9 "Mediator and BAM"

Oracle SOA Suite Performance Tuning Cookbook

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle SOA Suite Performance Tuning Cookbook

Oracle SOA Suite Performance Tuning Cookbook

Matt Brasier Nicholas Wright

Chapter No. 9 "Mediator and BAM"

Page 2: Oracle SOA Suite Performance Tuning Cookbook

In this package, you will find: A Biography of the authors of the book

A preview chapter from the book, Chapter NO.9 "Mediator and BAM"

A synopsis of the book’s content

Information on where to buy this book

About the Authors Matt Brasier is a professional services consultant with 10 years of experience tuning Enterprise Java applications. He has 9 years of experience working with Enterprise Java middleware, and has always focused on the performance aspects of application servers and SOA platforms. Matt has spoken at numerous technical conferences, including The Serverside Java Symposium and JUDCon.

Matt is the head of consulting at C2B2 Consulting Ltd., an independent middleware consultancy specializing in SOA and JEE, providing professional services on the leading Java middleware platforms. C2B2 is an Oracle Gold Partner with Application Grid Specialization.

I would like to thank my partner, Caroline, and our dog, Minstrel, for their understanding while I was writing this book, my father for encouraging me at the start, and C2B2 for giving me the time and experience necessary to do it.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 3: Oracle SOA Suite Performance Tuning Cookbook

Nicholas Wright is a Java middleware consultant and technical evangelist with 9 years of experience from Embedded C real-time systems to Enterprise Java. He has served on a Java Community Process Expert Group, and spoken at conferences across the world.

Nick is a senior consultant at C2B2 Consulting Ltd., where he works with a wide range of commercial and open source JEE and SOA middleware platforms.

I would like to thank my family, friends, and colleagues for whom I have disappeared off the face of the Earth while working on this book. For your patience and understanding, I thank you. Mostly I must thank my partner, Kay Louise, for putting up with my continual slaving over a computer whenever I have any spare time, love you.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 4: Oracle SOA Suite Performance Tuning Cookbook

Oracle SOA Suite Performance Tuning Cookbook Oracle SOA Suite 11g forms the basis of the SOA infrastructure for many organizations. While there is a wealth of information on administering SOA Suite applications already available, there is very little independent information available regarding performance tuning. With the chief goal of software and hardware vendors being to sell more licenses and hardware, the topic of getting the most from your existing investment often falls by the wayside. This book aims to address that by giving clear, concise, and simple recipes that will help you identify performance bottlenecks in your application, and then resolve them.

We work from the ground up, starting with how to identify common SOA Suite 11g performance problems and introducing the tools that you need, and working up the stack through JVM tuning and application server tuning, before covering the BPEL, BPMN, and mediator stacks. Finally, we have chapters on application design and deployment considerations.

What This Book Covers Chapter 1, Identifying Problems, starts out by looking at some of the common performance problems that can occur in the Oracle SOA Suite applications, and how to identify them. We look at using a variety of tools to understand what is going on inside the JVM, and to identify the particular resource bottleneck that is causing poor performance.

Chapter 2, Monitoring Oracle SOA Suite, looks at how we can use the VFabric Hyperic tool from VMWare to monitor the performance of our SOA Suite infrastructure, and what metrics we should be keeping an eye on.

Chapter 3, Performance Testing, looks at using the Apache JMeter tool to solve performance problems, by triggering them.

Chapter 4, JVM Memory, starts right at the bottom of the Oracle SOA Suite 11g stack. We look at how JVM memory is allocated, and how you can increase and decrease the memory available to your application, as well as other JVM tuning tips. The low-level areas of Oracle SOA Suite are often overlooked, so we cover the basics of Java memory management in enough detail to give those unfamiliar with it sufficient background to understand what they need to be concerned about.

Chapter 5, JVM Garbage Collection Tuning, teaches us how the Java virtual machine garbage collector does a very complicated job, and that there are a number of ways of optimizing it for the kinds of payloads that Oracle SOA Suite 11g usually has to handle.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 5: Oracle SOA Suite Performance Tuning Cookbook

Chapter 6, Platform Tuning, looks at some of the tuning options available in the operating system and Oracle WebLogic server that can improve the performance of SOA Suite 11g applications.

Chapter 7, Datasources and JMS, covers tips related to JMS and Datasource tuning that can improve the performance of resource-intensive SOA Suite applications.

Chapter 8, BPEL and BPMN Engine Tuning, primarily focuses on how we can improve the performance of the engine itself, including database tuning recipes, and helps those who find that the bottleneck of their SOA Suite system is the BPEL or BPMN application itself.

Chapter 9, Mediator and BAM, focuses on tuning the Oracle SOA Suite Mediator, and also includes some information on tuning the BAM Adapter for SOA Suite application that connects to a BAM service.

Chapter 10, Rules and Human Workflow, focuses on tuning the rules and human-workflow components, and our recipes focus on how to reduce resource contention.

Chapter 11, SOA Application Design, focuses on design-time recipes that will be of more interest to architects. We also discuss how design-time decisions can have an impact on the performance of a SOA Suite application, and covers best practices for designing the key components.

Chapter 12, High Performance Configuration, takes a higher-level look at the Oracle SOA Suite-deployment architectures, focusing on how we can use cluster and load balance to scale our application out to meet performance requirements.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 6: Oracle SOA Suite Performance Tuning Cookbook

9Mediator and BAM

In this chapter, we will look at the following recipes:

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

IntroductionThe Mediator engine and the Business Activity Monitoring (BAM) connector are used less frequently than the BPMN and BPEL engines, but there are still performance considerations when using these technologies. The Mediator engine is a relatively simple component, yet it works in quite a complex way, giving us only a few options for tuning it. These options are all focused on the execution of parallel routing rules, as sequential routing rules run on a single thread, and keep that thread until the rule has completed executing. Parallel rules, on the other hand, are executed by retrieving a list of requests from the database, and then processing each request using a set of worker threads. These threads allow the requests to be processed in parallel.

The BAM Adapter does not have many properties that can be tuned, but we do look at one improvement here that can improve performance.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 7: Oracle SOA Suite Performance Tuning Cookbook

Mediator and BAM

248

Setting Mediator Parallel Metrics LevelIf you make use of DMS (discussed in Chapter 2, Monitoring Oracle SOA Suite), then collecting the DMS metrics from the Mediator engine adds an unnecessary overhead.

Getting readyYou will need to know the administration credentials for your SOA Suite 11g domain, and the URL for the Enterprise Manager console.

How to do it...To set the Parallel Metrics Level property, perform the following steps:

1. Log in to the Enterprise Manager.

2. Expand the SOA section in the left-hand pane, and right-click on soa-infra.

3. Now, select SOA Administration | Mediator Properties.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 8: Oracle SOA Suite Performance Tuning Cookbook

Chapter 9

249

4. You will now see the SOA properties page.

5. Set the Metrics Level property to Disabled.

How it works...By default, the Mediator engine will collect metrics from the execution of composite instances, and make them available via the DMS. If you do not make use of these metrics, then there is little point collecting them, and by removing them, performance can be improved.

See also The Monitoring the system using the DMS servlet recipe in Chapter 2, Monitoring

Oracle SOA Suite

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 9: Oracle SOA Suite Performance Tuning Cookbook

Mediator and BAM

250

Setting Mediator Parallel Worker ThreadsBy increasing the number of parallel worker threads, environments with large workloads can process more requests at the same time.

Getting readyFor more details, refer to the Getting ready section of the Setting Mediator Parallel Routing Rules recipe.

How to do it...To set the Parallel Worker Threads property, perform the following steps:

1. Follow the steps from 1 through 3 from the Setting Mediator Parallel Metrics Level recipe.

2. Set the property Parallel Worker Threads to a larger value, such as 10.

How it works...The Parallel Worker Threads property determines the number of threads available for processing parallel routing rules. If you have many parallel routing rules defi ned in your application, then the default value of 4 may not be suffi cient; so you can increase the number of threads to allow more parallel rule requests to be processed concurrently.

See also The Setting Parallel Locker Thread Sleep recipe

The Setting Mediator Parallel Maximum Rows Retrieved recipe

Setting Mediator Parallel Maximum Rows Retrieved

By increasing the number of rows retrieved from the Mediator store table, performance can be improved in high demand systems.

Getting readyFor more details, refer to the Getting ready section of the Setting Mediator Parallel Metrics Level recipe.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 10: Oracle SOA Suite Performance Tuning Cookbook

Chapter 9

251

How to do it...The following steps will allow us to set the Parallel Maximum Rows Retrieved property:

1. Follow the steps from 1 through 3 from the Set Mediator Parallel Metrics Level recipe.

2. Set the property Parallel Maximum Rows Retrieved to a larger value, such as 500.

How it works...The Parallel Maximum Rows Retrieved property determines how many rows are read from the Mediator store database when loading pending parallel rule execution requests. By loading more rows at a time, the number of trips to the database can be reduced, improving performance; however, this will only have an effect if there are usually multiple requests waiting to be processed. The default is 200 rows, so you will need to have a busy system with lots of parallel Mediator rules, in order to see any improvement from increasing this value.

See also The Setting Parallel Locker Thread Sleep recipe

The Setting Mediator Parallel Worker Threads recipe

Setting Parallel Locker Thread SleepBy reducing the amount of time that the engine sleeps between checking for parallel composite instances that need executing, performance can be improved.

Getting readyFor more details, refer to the Getting ready section of the Setting Mediator Parallel Metrics Level recipe.

How to do it...To set the Parallel Locker Thread Sleep time, perform the following steps:

1. Follow the steps from 1 through 3 from the Set Mediator Parallel Metrics Level recipe.

2. Set the Parallel Locker Thread Sleep property to 1.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 11: Oracle SOA Suite Performance Tuning Cookbook

Mediator and BAM

252

How it works...While parallel routing rules do allow for truly asynchronous processing in the Mediator, the way that they are processed is not intuitive. A daemon thread is used to check the Mediator store database for requests to be processed, and checks each parallel rule in turn. If there are requests to be processed for a rule, then exactly one request will be processed for that rule using a Mediator worker thread. After it has checked all the parallel rules (and executed one request for each that has pending requests), the thread will sleep for a period of seconds defi ned by the Parallel Locker Thread Sleep time. By default this value is 2 seconds, but performance can be improved if you are using parallel routing rules by decreasing this to 1 second (the lowest value allowed). Note that the daemon thread does not execute the requests; it is just used to check which rules have pending requests, and assign them to worker threads.

This seemingly strange approach is used to prevent a very busy parallel rule from hogging all of the worker threads, thus starving other rules of the threads they need, and potentially causing performance bottlenecks.

See also The Setting Parallel Mediator Maximum Rows Retrieved recipe

The Setting Mediator Parallel Worker Threads recipe

Using batched delivery in the BAM AdapterBy altering the batching settings for the BAM Adapter, you can make fewer calls out to the Active Data Cache Server, which can save bandwidth and improve performance.

Getting readyThis recipe is only useful if your domain makes use of the BAM Adapter. You will need write access to the fi les in your SOA Suite domain for this recipe.

The confi guration fi les are not created until the server is fi rst started, so you will need to start the server before you are able to edit the fi les.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 12: Oracle SOA Suite Performance Tuning Cookbook

Chapter 9

253

How to do it...The following steps will help us enable batched delivery for the BAM Adapter:

1. Edit the following fi le:

ORACLE_HOME/user_projects/domains/$DOMAIN_NAME/config/fmwconfig/servers/bam_server1/applications/oracle-bam_11.1.1/config/BAMCommonConfig.xml

2. Locate the BAM batching properties at the top of the fi le, and increase their values.

We suggest trying the following values:

Property Default Value Tuned Value

Batching_Limit_Lower 1000 2500

Batching_Limit_Upper 5000 10000

Batching_Timeout 50 100

3. Save the fi le, and restart your BAM server.

How it works...The BAM Adapter sends data to the Active Data Cache server in batches. If you are making heavy use of the BAM Adapter in your SOA Suite application, you can improve performance by increasing the size of these batches. The three properties we tune here are the key ones used to determine the batch size. They can be explained as follows:

Batching_Limit_Lower: It determines the minimum number of messages in the batch.

Batching_Limit_Upper: It determines the maximum number of messages in the batch.

Batching_Timeout: It determines how long we have to wait before sending the batch if we have not reached either of the other two limits.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 13: Oracle SOA Suite Performance Tuning Cookbook

Mediator and BAM

254

There's more...The BAM Adapter batching system has retry logic built into it that will attempt to resend batches of messages if the Active Data Cache server is down, or some other failure occurs when sending a batch of messages. These properties can also be tweaked in order to confi gure this retry behavior, including changing the time between retries, and determining the number of pending batches before calls to the BAM Adapter start blocking. These properties are discussed in more detail in the Oracle BAM Adapter confi guration guide at http://docs.oracle.com/cd/E23943_01/admin.1111/e10226/bam_config.htm#SOAAG9931. As the retry logic is focused primarily on resilience rather than performance, we will not discuss it in detail here.

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book

Page 14: Oracle SOA Suite Performance Tuning Cookbook

Where to buy this book You can buy Oracle SOA Suite Performance Tuning Cookbook from the Packt Publishing website: http://www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book. Free shipping to the US, UK, Europe and selected Asian countries. For more information, please read our shipping policy.

Alternatively, you can buy the book from Amazon, BN.com, Computer Manuals and most internet book retailers.

www.PacktPub.com

For More Information: www.packtpub.com/oracle-soa-suite-11g-performance-tuning-cookbook/book