Optimize and improve the performance of Jitterbit private agents
Introduction
As projects become larger and more complex, private agents can take longer to run operations, and to synchronize operation data. To improve private agent performance, follow the guides on this page. (For significant performance issues, contact Jitterbit support.)
Private agent performance tuning
This section gives a recommended configuration set to improve the performance of private agents experiencing higher than average workloads.
Note
The set is based on the results of Jitterbit's internal testing and applies to private agent versions 11.22 or later running with a PostgreSQL 14 database server on an instance with at least 16 GB RAM.
To use this configuration set, configure your private agent components according to the following table:
Component | Configuration file | Location (Windows) | Location (Docker/Linux) |
---|---|---|---|
Tomcat server | jitterbit-agent-config.properties | JITTERBIT_HOME\Resources\ | JITTERBIT_HOME/Resources/ |
Private agent | jitterbit.conf | JITTERBIT_HOME | JITTERBIT_HOME |
Apache multi-processing module | httpd-mpm.conf | JITTERBIT_HOME\Apache\conf\extra\ | JITTERBIT_HOME/apache/conf/extra/ |
File cleanup service | CleanupRules.xml | JITTERBIT_HOME | JITTERBIT_HOME |
Java virtual machine | Java Control panel | /etc/sysconfig/jitterbit |
JITTERBIT_HOME
is the installation directory, by default C:\Program Files\Jitterbit Agent\
on Microsoft Windows, /opt/jitterbit/
on Docker and Linux.
Important
Apply all the parts of this configuration set, not some of them. After making the complete set of changes, restart the private agent.
Tomcat server configuration
Edit jitterbit-agent-config.properties
and set the following values:
1 2 |
|
- Line 1: Recommended for Microsoft Azure hosts to avoid premature WebSocket connection termination.
- Line 2: Increase the maximum number of requests.
Java virtual machine memory allocation
Increase the values for the private agent Java VM initial and maximum memory allocation (Java parameters -Xms
and -Xmx
) to the same value according to the following formula:
\((Total\ Available\ Host\ Memory - 4) \times 0.75\)
Private agent configuration
Edit jitterbit.conf
and set the following values in each section:
-
Enable internal pooling:
[DbInfo] UseInternalPooling = true
-
Increase worker threads:
[ProcessEngine] MaxNumberOfWorkerThreads = X
where \(X = 4 \times\) (number of vCPUs or cores).
Note
A value of
auto
defaults to \(2 \times\) the number of vCPUs/cores. -
Change values for the following:
MaxOperationStackDepth
: Maximum number of synchronous operations that can be queued for execution (default value50
).MaxAsyncOperationChainLength
: Maximum number of child asynchronous operations that can be spawned (default value50
).
[OperationEngine] MaxOperationStackDepth = 200 MaxAsyncOperationChainLength = 200
-
Enable logging:
[APIOperation] EnableLogging = true
-
Change the file cleanup interval:
[FileCleanup] FrequencyInHours = 6.0
-
Increase maximum number of HTTP connections in the pool, and the maximum number of connections per route:
[HttpConnectionPoolLocal] MaxConnections = 200 MaxConnectionsPerRoute = 200
-
Add the following section and values. This prevents a large log sync record backlog, and improves the efficiency of the log shipper:
[LogSync] MaxRecordsToSync = 2000 MinRecordsToSync = 2000
Apache multi-processing module configuration
Set the following values in the <IfModule mpm_event_module>
section of the httpd-mpm.conf
file:
<IfModule mpm_event_module>
ServerLimit 8
StartServers 8
MinSpareThreads 128
MaxSpareThreads 128
ThreadsPerChild 16
ThreadLimit 64
MaxRequestWorkers 128
MaxConnectionsPerChild 1000
</IfModule>
Cleanup rules
Review and edit the file cleanup service rules.
Environment sync performance tuning
When you deploy an Integration Studio or Design Studio project, the project's environment is locked while data is synchronized between the Harmony cloud servers and all private agents in the agent group. While an environment is locked, no operations are processed. To avoid this behavior affecting the running of your projects, apply the following tips:
-
Reduce the size of projects:
Large projects take longer to deploy and synchronize. To reduce the size of projects, do the following:
-
Minimize the number of operations.
-
In transformations, use only the fields you need.
-
Delete unused components.
-
-
Reduce the number of projects per environment:
During environment sync, the entire environment is locked. To reduce the effect of this, do the following:
-
Use more environments, and spread your project portfolio across them evenly.
-
Keep high-availability (HA) projects and non-HA projects in separate environments.
-
-
Deploy during low load times:
To reduce the impact of synchronization times on production systems, schedule your project deployments to run during off-peak hours.
-
Monitor synchronization times:
To monitor environment sync times, scan the
JITTERBIT_HOME/log/jitterbit-agent.log
for the textenvironment-deploy
:Example log entry2024-07-30 15:54:24 environment-deploy-sync-thread-thread-1 INFO org.jitterbit.integration.server.messaging.agent.deploysync.SynchronizeAgent:620 - Agent synchronization for environment 227680 and agent group ID 171230 completed at 18:54:24,667 duration in MS: 4388 Rows updated: 1 by thread: 33 name environment-deploy-sync-thread-thread-1
In the above example above, the log information is as follows:
Description Example Environment ID 227680
Agent group ID 171230
Sync duration in milliseconds 4388
Number of TranDb
rows updated1