IBM BPM, V8.0.1, All platforms > Authoring services in Integration Designer > Troubleshooting

Performance tuning for IBM Integration Designer

If an application fails to run or cycles for a long time without completing, those situations might be caused by insufficient system memory.

IBM Integration Designer can be used in a number of configurations. The information in this topic focuses on the use of Integration Designer with the test environment and with Process Server. Although the context is the tools environment, the tuning solutions also involve adjustments to the test environment and Process Server using its administrative console. The issues described here could also occur if you are using Integration Designer with WebSphere Enterprise Service Bus or with IBM Process Center and, optionally, with IBM Business Monitor.

There are two typical symptoms of performance problems:

Out of memory problems are most likely to arise on a 32 bit JVM and a 32 bit operating systems, where the amount of accessible memory is limited. For 64 bit operating systems, use a 64 bit JVM. A 64 bit JVM supports much larger heap sizes than a 32 bit JVM; the practical limit is determined by the amount of physical memory available on the system. The throughput and memory efficiency of 64 bit JVMs is very similar to that of 32 bit JVMs in IBM BPM, so there is usually no compelling reason to use a 32 bit JVM on a 64 bit operating system.


Identifying problems with heap size

When IBM Integration Designer is responding slowly to mouse clicks or keyboard strokes, you can use the Heap Status widget or generate the verbosegc.log file to see JVM heap usage.

A check for Java heap size issues would be to turn on the Heap Status widget in Integration Designer by selecting Window > Preferences > General > Show heap status. This widget allows you to see how much of the heap is being used and to trigger a garbage collection.

The verbosegc.log is also useful for analyzing memory usage. To generate the verbosegc.log file for Integration Designer:

  1. Using a text editor, from the Integration Designer installation directory, open the eclipse.ini file.

  2. Add the following line:
    -verbosegc -Xverbosegclog: location for the generated gclog file
    If you do not specify an exact location, the file will be created in the installation directory.

  3. To analyze the verbosegc.log file, download IBM Pattern Modeling and Analysis Tool for Java Garbage Collector (PMAT) from the following URL:http://www.alphaworks.ibm.com/tech/pmat.

  4. To run PMAT, type the following command in a command prompt:
    java -Xmx500m -jar ga39.jar 
    .
The JVM parameters such as -Xmx are found in the eclipse.ini file in the IID_HOME directory.


Analyzing system memory use

When heap size is increased, the memory available for the rest of the process is decreased. The remaining system memory is used by native code, the JVM loading classes, the JVM itself, and so on. To analyze system memory utilization, use the appropriate system memory tool (for example, vmstat for Linux or Unix systems, and Performance Monitor or Task Manager for Windows).


Addressing problems from swapping

If you discover that performance is severely degraded because swapping is occurring, try these solutions:


Addressing problems related to garbage collection

This kind of problem can be indicated by either of two symptoms:

You can address these symptoms by increasing the Java heap size (-Xmx) or tuning the JVM heap. The Java heap must be large enough to contain all required Java objects. However, on 32 bit systems ensure that it is not so large that the amount of native memory becomes a bottleneck. You need to experiment to determine these limits.

For information about tuning the JVM heap, see “Tuning the IBM virtual machine for Java" in the WebSphere Application Server information center. Here is a summary of key tuning points. The parameters referenced below apply to IBM JVMs. HotSpot JVMs, used on Solaris systems, generally have similar options but the syntax is different. Consult the JVM documentation for details.

  1. Generate the verbosegc.log file.
  2. Tune the Java heap size parameters.
  3. Experiment with different garbage collection policies. These policies are set by using the –Xgcpolicy JVM option. There are two choices: optthruput and gencon. The gcpolicy choice can influence the amount of memory used, depending on the particular scenario. If you use the gencon gc policy, tune the nursery size parameters (-Xmn size, -Xmns initial size, and -Xmnx maximum size. These parameters are found in the eclipse.ini file in the IID_HOME directory.


Changing heap size settings

Sometimes publishing in IBM Integration Designer takes a long time, and sometimes the server suddenly stops. If that happens, check the server log for an out of memory error. By default, the Integration Designer test environment is configured for unit testing and it might run out of memory with large workloads. To resolve this issue, increase the heap size.

  1. In the left panel of the administrative console, select Servers > Server Types > WebSphere application servers.

  2. Select the server that requires more memory.
  3. Under Java and Process Management, select Process Definition.

  4. In the Additional Properties section, select Java Virtual Machine.

  5. There are two fields that are related to heap size, initial heap size and maximum heap size. By default, if the initial heap size is not specified, it is 256 KB. For a 32-bit system, the Java Virtual Machine (JVM) heap size is limited to 1.5 GB on Microsoft Windows and 2.5 GB on AIX.

There are no definite rules for the optimal heap size, because the required size depends on the number and size of the modules deployed on the server and on whether the server is used as development server or production server. However, here is a technique that has worked for some administrators. Increase the maximum value to a level that is large enough for the server not to run out of memory and collect verbosegc data. The verbosegc data shows the typical or maximum amount of live data in the heap. Set the maximum heap size so that the server remains approximately 50% empty during a steady state.

For example, if the verbosegc data reveals that there is typically about 500MB of data, set the maximum heap size to 1024MB.

You might not be able to use the maximum setting, because that setting might cause you to run out of memory on your system before the JVM limit is reached. That is the case if the symptom is an out of memory exception, and there is not a garbage collection taking place immediately before the out of memory exception. In this case, the issue is that the native memory for a resource (such as threads, sockets, file handles, JIT compiled code) has been exhausted. In this case, decrease the maximum Java heap size (-Xmx) to allow more room for native memory in the JVM address space. This issue typically occurs only on 32 bit operating systems.


Processing Java files in Integration Designer

This advice addresses situations where you need to import a very large number of Java files into Integration Designer. In that case, large number of Java files might cause build performance issues. There are four major tasks that Integration Designer performs when you import Java files into the workspace for the first time:

  1. Importing the Java files into the workspace.
  2. Compiling the Java files.
  3. JDT indexing to gather basic information from the Java files for validation and search purposes.

  4. Integration Designer indexing and validation to identify Java sources that use the business object API for better validation and refactoring.
These four steps can take a large amount of time in your build process if you have hundreds or thousands of Java files in your processes.

Here is one step you can take to improve performance in this situation. Bundle Java classes into Java Archive (JAR) files and reference the JAR files instead of individual Java files. By compiling all the Java source files into a JAR file, you save Java compilation time (which is actually quite significant) and you save time on the Java indexing and validation as well. To support source-level debugging, bundle the Java source files together with the Java classes in the same JAR.

This technique should only be used if the Java code is not likely to be changed, or will be changed infrequently. To create the JAR file, import the classes and then use the JAR export wizard.

See "Using binary JAR files with Integration Developer and Process Server" in the related links for more information about this subject.

Troubleshooting and problem determination


Related information:

Use binary JAR files with Integration Developer and Process Server
WebSphere Business Process Management and WebSphere Enterprise Service Bus V7 Performance Tuning