Troubleshooting memory issues for Business Process Manager servers

If you are using IBM® Business Process Manager with a 32-bit operating system or Java Virtual Machine (JVM), you might notice issues with server performance and availability, including OutOfMemory exceptions. These happen when the operating system or JVM does not have enough accessible memory to support all the running processes.

If the server performance is severely degraded or if you see an OutOfMemory exception, consider switching to a 64-bit operating system or JVM. Otherwise, use the information in the following table to identify possible solutions for specific memory issues.

Table 1. Observable memory issues and suggested actions
Observed behavior Possible actions
Severely degraded server performance (swapping occurs)
  • Ensure there is enough physical memory to support IBM Business Process Manager and all other running processes. Use the system memory analysis tool for your platform (for example, vmstat for Linix or UNIX platforms, or Task Manager for Windows platforms).

    Note that some 32-bit operating systems can only use a specific amount of physical memory.

  • Stop any running processes that are not critical to Business Process Manager (for example, extra browser windows or other installed applications).

  • Establish a remote DB2 connection and use it instead of the local DB2 instance. Stop all local DB2 processes on the local machine.

  • If you are authoring processes, use a remote unit test environment and Process Center instead of running them on your local machine.

Severely degraded server performance (no swapping) combined with excessive garbage collection activity
  • Increase the maximum Java heap size. The heap size needs to be large enough to contain all of the required Java objects, but small enough to prevent bottlenecks from large amounts of native memory.

  • Tune the JVM heap.

For more information on tuning the heap size and garbage collection settings, see Tuning the IBM virtual machine for Java and Java virtual machine settings.

Memory issues; for example, the instance occupies much of the available memory

Reduce the branch context cache size. Reducing the cache size from 64 to 16 makes a huge difference in the amount of memory the instance uses, although you are trading off some performance for the improvement in memory use.

To change the cache size, locate the 00static.xml file in PROFILE_HOME\config\cells\cell_name\nodes\node_name\servers\server_name\process-server\config\system. In it, you can edit the value for branch-context-max-cache-size.

An OutOfMemory exception
  • If the exception is immediately preceded by frequent garbage collection activity that does not free space in the Java heap, use the information in the previous row to increase the maximum Java heap size, tune the JVM heap, or both.

  • If the exception is not immediately preceded by garbage collection activity, it can indicate that the native memory for a resource has been exhausted. Decrease the maximum Java heap size to allow more room for native memory in the JVM address space.

  • If the exception occurs when you try to download Process Designer from the Process Center console, perform the following steps.
    1. Exit the Process Center console.
    2. Use the WebSphere administrative console to set a custom property for the web container:
      1. Click Servers > Server Types > WebSphere application servers > serverName > Web container > Custom properties.
      2. Add the com.ibm.ws.webcontainer.channelwritetype property and set its value to synch.
      3. Save your changes and exit the administrative console.
    3. Restart the Process Center console and resume downloading Process Designer.
An OutOfMemoryError exception with a corresponding thread hung exception If you encounter this particular OutOfMemoryError exception, you may be able to resolve the problem by completing the following steps:
  1. Increase the allowable number of processes by adding the following lines to the end of the /etc/security/limits.conf file (or by changing the values if the lines already exist in the file):
    # - nproc - max number of processes
    * soft nproc 65535
    * hard nproc 65535
    If you are performing an installation as a non-administrative user, also add or modify the following lines for your user name:
    user_name soft nproc 65535
    user_name hard nproc 65535

    Save and close the file, and then log off and log in again. You can check the current allowable number of processes by running the command ulimit -u.

  2. Check for the existence of a file named /etc/security/limits.d/90-nproc.conf, which overrides the nproc value set in the limits.conf file. If the 90-nproc.conf file exists, edit it and set the nproc values that are specified in the previous step. For example:
    /etc/security/limits.d/90-nproc.conf
    * soft nproc 65535
  3. Save and close the files, and then log off and log in again. You can check the current allowable number of processes by running the command ulimit -u.