Performance tuning on Jitterbit private agents
Introduction
This page gives a recommended configuration set to improve the performance of private agents experiencing higher than average workloads.
Important
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. (For additional troubleshooting information on private agents running on the Microsoft Azure platform, see Connection, WebSocket, and I/O Errors on Azure VMs.)
To use this configuration set, configure private agent components using the details in 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.