By Antony Reynolds-Oracle on Aug 13, 2013
It’s a Java World
The first chapter identifies tools and methods to identify performance bottlenecks, generally covering low level JVM and database issues. Useful material but not really SOA specific and the authors I think missed the opportunity to share the knowledge they obviously have of how to relate these low level JVM measurements into SOA causes.
Chapter 2 uses the EMC Hyperic tool to monitor SOA Suite and so this chapter may be of limited use to many readers. Many but not all of the recipes could have been accomplished using the FMW Control that ships and is included in the license of SOA Suite. One of the recipes uses DMS, which is the built in FMW monitoring system built by Oracle before the acquisition of BEA. Again this seems to be more about Hyperic than SOA Suite.
Chapter 3 covers performance testing using Apache JMeter. Like the previous chapters there is very little specific to SOA Suite, indeed in my experience many SOA Suite implementations do not have a Web Service to initiate composites, instead relying on adapters.
Chapter 4 covers JVM memory management, this is another good general Java section but has little SOA specifics in it.
Chapter 5 is yet more Java tuning, in this case generic garbage collection tuning. Like the earlier chapters, good material but not very SOA specific. I can’t help feeling that the authors could have made more connections with SOA Suite specifics in their recipes.
Chapter 6 is called platform tuning, but it could have been titled miscellaneous tuning. This includes a number of Linux optimizations, WebLogic optimizations and JVM optimizations. I am not sure that yet another explanation of how to create a boot.properties file was needed.
Chapter 7 homes in on JMS & JDBC tuning in WebLogic.
SOA at Last
Chapter 8 finally turns to SOA specifics, unfortunately the description of what dispatcher invoke threads do is misleading, they only control the number of threads retrieving messages from the request queue, synchronous web service calls do not use the request queue and hence do not use these threads. Several of the recipes in this chapter do more than alter the performance characteristics, they also alter the semantics of the BPEL engine (such as “Changing a BPEL process to be transient”) and I wish there was more discussion of the impacts of these in the chapter. I didn’t see any reference to the impact on recoverability of processes when turning on in-memory message delivery. That said the recipes do cover a lot of useful optimizations, and if used judiciously will cause a boost in performance.
Chapter 9 covers optimizing the Mediator, primarily tweaking Mediator threading. THe descriptions of the impacts of changes in this chapter are very good, and give some helpful indications on whether they will apply to your environment.
Chapter 10 touches very lightly on Rules and Human Workflow, this chapter would have benefited from more recipes. The two recipes for Rules do offer very valuable advice. The two workflow recipes seem less valuable.
Chapter 11 takes into the area where the greatest performance optimizations are to be found, the SOA composite itself. 7 generally useful recipes are provided, and I would have liked to see more in this chapter, perhaps at the expense of some of the java tuning in the first half of the book. I have to say that I do not agree with the “Designing BPEL processes to reduce persistence” recipe, there are better more maintainable and faster ways to deal with this. The other recipes provide valuable ideas that may help performance of your composites.
Chapter 12 promises “High Performance Configuration”. Three of the recipes on creating a cluster, configuring an HTTP plug in and setting up distributed queues are covered better in the Oracle documentation, particularly the Enterprise Deployment Guide. There are however some good suggestions in the recipe about deploying on virtualized environments, I wish they had spoken more about this. The use of JMS bridges recipe is also a very valuable one that people should be aware of.
The Good, the Bad, and the Ugly
A lot of the recipes are really just trivial variations on other recipes, for example they have one recipe on “Increasing the JVM heap size” and another on “Setting Xmx and Xms to the same value”.
Although the book spends a lot of time on Java tuning, that of itself is reasonable as a lot fo SOA performance tuning is tweaking JVM and WLS parameters. I would have found it more useful if the dots were connected to relate the Java/WLS tuning sections to specific SOA use cases.
As the authors say when talking about adapter tuning “The preceding sets of recipes are the basics … available in Oracle SOA Suite. There are many other properties that can be tuned, but their effectiveness is situational, so we have chosen to focus on the ones that we feel give improvement for the most projects.”. They have made a good start, and maybe in a 12c version of the book they can provide more SOA specific information in their Java tuning sections.
Add the book to your library, you are almost certain to find useful ideas in here, but make sure you understand the implications of the changes you are making, the authors do not always spell out the impact on the semantics of your composites.