Determining Engine Memory Allocation (Standalone)

ALBPM Standalone allows you to tune Process Execution Engine performance by setting the memory allocation for the engine and JVM.

Note: On the J2EE version of ALBPM memory allocation is configured at the container level. See your application server documentation for more information.
One factor affecting the performance of an engine is the amount of memory available to the the engine and the JVM running the engine. Allocating too much or too little memory can negatively influence performance. The amount of memory required for an engine is determined by three parameters:
Parameter Description
Maximum JVM Heap Size Specifies the maximum amount of memory, in megabytes, the engine can use. If the engine's memory usage reaches this limit, the engine stops itself and restarts.

You should always try to set the minimum value for the JVM heap size.

The default is 256 megabytes

Maximum Instance Size Specifies the maximum amount of memory a process instance can use. This property limits the size of all process instance variables used by a process instance. When any instance exceeds this limit, the engine is not able to persist instance data and the task fails and must be re-executed after increasing the size of this property.

The default is 16 kilobytes

Instance Cache Size Defines the cache size used to store recently accessed process instances. This cache is shared by all processes deployed on the engine.

The default is 5000 instances

The default value of 5000 instances in the cache is usually considered above average for medium size installations. If the engine has processes with thousands of instances running and these processes have a high concurrency, it is advisable to increase the size of the cache so that the engine does not need to reload instance information when new instances are accessed.

Note: The engine outputs warning messages to the engine log when these the engine is approaching these limits.
Note: These parameters are set using the Process Administrator on theExecution tab.

These three parameters work together to determine engine performance. Before increasing the value of these parameters, you should check the process instance variables of your deployed processes. Larger instances variables take longer to persist and require increased engine cache sizes.

A good rule of thumb for setting these parameters is:

Following this rule ensures that the instance cache will not consume more than half of the engine's allocated memory. If you need to increase the Maximum Instance Size, you should also increase the Maximum JVM Heap Size.

You should always try to set the minimum value for the JVM heap size. You should only increase the JVM heap size when you are required to increase the Maximum Instance Size or Instance Cache Size. However, before increasing the size of these parameters, you should check the instance variables of you processes. Large instance variables take longer to persist and may require more cache memory. If the size of your instance variables is too large, you may need to redesign the process. For example, using arrays in an instance variable can often cause instance variable to be too large.

If you have processes that are using instances concurrently and accessed frequently, you may want to analyze if the instances really need to be loaded back into the cache. Fetching instances from the database very often may incur in performance degradation problems. Again a redesign of your processes may be in order.