Skip to main contentCúram Performance & Tuning Guide

Tuning JVM settings

Because of the memory requirements in Cúram, either a 64-bit WebSphere® Application Server (WAS) or WebLogic Server (WLS) application server is required for production.

For the Cúram internal application and the portals that are deployed in their own cluster, start with the following settings:

minimum heap size = maximum heap size = 4GB

HotSpot JVM
  • Size the Permanent Generation to at least 512 MB
  • Set the Nursery size to about two-thirds of the Heap size

GSS and BirtViewer
  • Start with Minimum Heap Size = Maximum Heap Size = 1GB

Then, use the following heuristic to further tune heap sizes during your load tests, with an objective of getting above 98% garbage collection efficiency. Configure the following settings, where avg_used_after_global is the average amount of used heap after global collections:

-Xmx = 8 * avg_used_after_global
-Xms = 8 * avg_used_after_global
-Xmn = 6 * avg_used_after_global

The following common recommendations outline the rationale behind the previous heuristic:

  • A recommendation for sizing the tenured generation is to have a free tenured utilization after global collection of around 50%.The tenure contains global and thread-scoped Cúram caches, and any long-lived objects.
  • A recommendation for sizing the nursery generation is to have a nursery as large as possible, if the pause times are acceptable. The nursery contains transient objects for in-flight Cúram transactions, so its sizing depends on the number of concurrent transactions and the average memory payload of a transaction. The goal is to minimize the number of transient objects that survive collections and end up in the tenure. We have found in our load tests that a 3:1 ratio of nursery to tenure gives good results.