Boomi Performance Tuning: Best Practices for Optimizing Your Process (Part 1)
Performance tuning in Boomi can be broken down into two parts. The first part being tuning the Java Runtime, the second part tuning a specific process by looking at its composite shape makeup and finding efficiencies. Performance tuning Boomi will bring about many optimizations including:
Performance tuning the Boomi Java runtime is vital for achieving optimal efficiency, reliability, and cost-effectiveness in integration processes. Performance tuning a Boomi process, individually, may help with time to completion, resource consumption and cost. It ensures that the system can handle current and future demands while providing a stable and high-performing platform for job executions.
Diagnostics
The first step of identifying a performance issue with the Java Runtime environment is examining the process logs or the process states in process reporting. Java Runtime issues will persist across multiple job executions, so identify several examples of poor performance. While examining the Process State in Process Reporting, identify gaps between the summation of all the process shapes’ runtime and the overall process runtime. The difference could be due to the Java Runtime or file system latency. While examining the process logs keep a lookout for the shape taking X ms, but the next entry in the log was actually Y seconds later. If Y > X, there’s most likely a runtime issue. Also, pay attention to the cleanup/wait times in the logs, excessively long cleanup or wait times can represent a problem within the runtime. As a rule of thumb, if all job executions are taking longer, then consider either a Java Runtime issue, file system issue, or memory issue.
To determine whether the issue is related to the file system or runtime, you can use a utility like iostat or configure monitoring through the JMX port to observe file system activity.
Areas of Opportunity
JRE Runtime
Ensure that the version of Java that the Boomi node is utilizing is current. If you are triaging a molecule ensure that all nodes are running the same version of Java and that the path in pref_jre.cfg is the same. In addition, if you are using a NAS / EFS mount to share the Boomi installation directory across nodes ensure that:
The installation directory for the JRE that Boomi is configured to use is not on the EFS / NAS mount, it should be a local path for each node. This will eliminate a ton of overhead file system activity.
The temp and work directories are also set up on each local node and point to a local directory. If temp and work directories are on the EFS / NAS mount, then expect more filesystem activity.
Recommended by LinkedIn
Please be sure to restart the entire Boomi environment after making changes.
NFS Configuration
The NFS configuration in /etc/fstab itself might be the cause of inefficiencies and slowness. Please follow exactly the Boomi Configuration Guide for setting up NFS found here. Specifically, do not disable any of the NFS cache settings by setting any of these properties in the NFS connection string on the /etc/fstab entry:
acdirmin=0, acdirmax=0, actimeo=0
Hard reboot the system after updating the settings.
Additional Considerations
Try a different garbage collector. If using Java 8, by default the parallel garbage collector is active. However, you may want to use G1GC. Test out each GC with your workload to see which one works the best.
Disable extra logging, consider setting process configuration to “low latency” mode to avoid extra logging.
Turn off anti-virus as it is known to occupy system resources as a Boomi workload is executing. The resource competition will slow down overall performance.
Conclusion
Performance tuning the Boomi Java Runtime is crucial to maintaining a healthy Boomi environment because it ensures efficient resource utilization, which enhances the speed and reliability of integration processes. Proper tuning optimizes CPU, memory, and garbage collection settings, leading to reduced latency and preventing system bottlenecks. It also supports scalability by enabling the system to handle increased loads and concurrent processes effectively. This results in higher stability, minimizing downtime and performance-related issues, and ensures cost efficiency by reducing the need for additional infrastructure and lowering operational expenses. Overall, tuning the Boomi Java Runtime is essential for meeting Service Level Agreements (SLAs), improving user experiences, and adapting to evolving business requirements, thereby sustaining a robust and high-performing integration platform.