Oracle Service Bus 12.2.1 JVM Settings: PermSize, Heap, Non-Heap, and ResourceManagement

Oracle Service Bus comes with JVM settings that cause questions to some customers. This posting provides answers to the most common questions I discussed in workshops or received so far.

Warning about PermSize Option

Question 1: “I see the following warning:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024m; support was removed in 8.0

Does that mean that Oracle generates the startup scripts with wrong JVM flags?”

Answer: With Oracle JVM 8 the permanent space was removed. Not having a perm space was a JRockit “feature” that has been ported over to the Oracle JVM. The warnings of course are harmless. Startup scripts for WebLogic only domains are generated correctly for WebLogic 12.2.1. So Oracle needs to change this for OSB domains and they know about it.

Heap Size

Question 2: “How big is Oracle Service Bus now? I used to be able to create and run a cluster on my laptop with earlier versions but now I run into resource problems.”

Answer: Default startup parameters are: -Xms1024m -Xmx2048m, i.e. minimum heap size is 1 GB, maximum heap size is 2 GB. Hence you should expect your process size to be larger than 1 GB right from the start.

Screen Shot 2016-02-17 at 13.27.49 Screen Shot 2016-02-17 at 13.29.38

Roughly speaking after starting up a single OSB instance (everything hosted on the admin server), you should expect more than 400 Mb of heap used. Have a look at the screenshot above. The last drop in the first screenshot was caused by an external garbage collection request (I did it manually). In addition there is more than 500 Mb of non-heap used (100 Mb code cache and 400 Mb meta space, GC of course does not affect this area). This shows that 1GB as a minimum setting makes sense.

JVM ResourceManagement Flag

Question 3: “I see the following warning

<Feb 17, 2016 9:45:56 AM CET> <Info> <RCM> <BEA-2165021> <"ResourceManagement" is not enabled in this JVM. Enable "ResourceManagement" to use the WebLogic Server "Resource Consumption Management" feature. To enable "ResourceManagement", you must specify the following JVM options in the WebLogic Server instance in which the JVM runs: -XX:+UnlockCommercialFeatures -XX:+ResourceManagement.> 
Should I enable -XX:+ResourceManagement? Will it help to improve OSB 12c performance?"

Answer: You probably have read announcements that emphasize that OSB 12.2.1 is running on top of WebLogic 12.2.1 and WebLogic 12.2.1 supports a number of exciting new features. Nothing wrong with that, kind of marketing logic though.

It is important to understand that Oracle Service Bus 12.2.1 (and other up stack 12c products such as Oracle SOA Suite, Oracle BPM etc.) doesn’t use yet some really cool WebLogic 12.2.1 features such as domain partitioning or elastic cluster.

In short: Oracle JVM 8 resource management is used as a commercial feature together with G1 garbage collector to track JVM resource usage on the JVM level per partition. Based on the collected data about memory, file and thread usage WebLogic can then react and ensure that a WebLogic partition within one domain doesn’t steal too many resources from another partition. It’s important to understand that the magic (the reaction) happens in WebLogic and it’s based on the data provided by the JVM.

So will the -XX:+ResourceManagement setting improve OSB 12.2.1 performance? I’d say no. It will only have benefits when used with partions which are so far not supported by OSB 12.2.1.

 

 

Oracle Service Bus 12.2.1 Training Course

I provided an open enrollment, hands-on training for a dozen SOA architects. Another successful Oracle Features and Showstoppers training course.
This time we covered Oracle Service Bus 12.2.1, including all the new and cool features such as dynamic domain value maps, JDeveloper 12.2.1, pipeline templates, dynamic validation, end-to-end REST, JSON payloads, the new XQuery mapper with XQuery modules, clustering, Oracle Fusion Middleware Control, and much much more.

thanks to everyone who attended!

osb12c kurs

Quick Tip: Change OSB 12c Domain Value Maps (DVM) in Service Bus Console

Other people have written and explained the usage of Domain Value Maps (DVMs) in Oracle Service Bus already: They can be generated easily within JDeveloper and shared with SCA components of SOA Suite. Previously SOA Composer could be used to modify them.

Here is quick tip: You can now change (or even create!) them within service bus console easily at runtime. So open your service bus console, e.g. from http://localhost:7101/servicebus. Note that the previous /sbconsole is now /servicebus and comes with a fresh look. The old URL is still working but deprecated and should not be used anymore.

dvm

Btw there were other XQuery based approaches that also allowed DVM to be used and changed at runtime, but the built-in DVMs are easiest and most convenient.

Bug: Wrong Message Type and XQuery Expressions in OSB 12.2.1 /servicebus Console for Message Based Pipelines

Environment

I am using the latest download of JDeveloper 12.2.1 with the builtin test domain for SOA Suite 12.2.1 and OSB 12.2.1, all running on Java 1.8.0_65_b17 on a RedHat derivative.

Business Service

I created a message based business service based on a simple XML element definition for an Order via an XSD.

2016-01-21_12-16-15

Testing the business service shows the correct test data. Good. Note, that there is an embracing <ord:order> element containing other element such as version or ID.

2016-01-21_12-07-41

Pipeline

A pipeline is defined based on the same element.

2016-01-21_12-16-36

Interestingly the pipeline shows a different variable structure, missing out the embracing <ord:order> element.

2016-01-21_12-15-21

So any created XQuery expressions, e.g. for a Log action as seen on the screenshot above will be wrong as well and missing the embracing <ord:order> element. So put it more clear, non of the expression will return anything meaningful.

Conclusion / Impact

IMHO this is a severe issue if confirmed. Let’s face it. OSB was never easy but a rock solid product. For almost a decade I solved problems by telling people to stay calm and carefully looking and the test data, the elements, and the namespaces provided by OSB testing console. Now this seems to be broken.

Workaround

You can manually fix your XQuery expression. Possibly this also relates to another OSB 12.2.1 bug I blogged about earlier.

Tiny Improvement, Big Difference: Revert Production / Development Mode in WebLogic 12.2.1 Admin Console

A lot of people felt it was never right that you could not go back from production mode to development mode in WebLogic admin console. You alway could change it using WLST or overwriting it with a startup parameter or modifying config.xml.

With WebLogic 12.2.1 this has changed. You can change it using the admin console now.

2016-01-19_09-50-55