Skip to Content

Private agent performance tuning

Introduction

This page gives a recommended configuration set to improve the performance of private agents experiencing higher than average workloads.

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
agent.heart.beat.interval = 3
max.concurrent.requests = 200

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:

  1. Enable internal pooling:

    [DbInfo]
    UseInternalPooling = true
    
  2. 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.

  3. Change values for the following:

    • MaxOperationStackDepth: maximum number of synchronous operations that can be queued for execution (default value 50).
    • MaxAsyncOperationChainLength: maximum number of child asynchronous operations that can be spawned (default value 50).
    [OperationEngine]
    MaxOperationStackDepth = 200
    MaxAsyncOperationChainLength = 200
    
  4. Enable logging:

    [APIOperation]
    EnableLogging = true
    
  5. Change the file cleanup interval:

    [FileCleanup]
    FrequencyInHours = 6.0
    
  6. Increase maximum number of HTTP connections in the pool, and the maximum number of connections per route:

    [HttpConnectionPoolLocal]
    MaxConnections = 200
    MaxConnectionsPerRoute = 200
    
  7. 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.