Gatling is mostly tested against JDK8 packages provided by Oracle. Gatling requires JDK8. We recommend that you use an up-to-date JDK.
If some launch scripts options are not available on your JVM, e.g. because you run a 32 bit version, please edit the scripts and remove the unsupported options.
IPv4 vs IPv6¶
IPv6 (enabled by default on Java) was found to sometimes cause some performance issues, so the launch scripts disable it with the following options:
If you really need to prefer IPv6, please edit the launch scripts.
Gatling can consume a very large number of open file handles during normal operation. Typically, operating systems limit this number, so you may have to tweak a few options in your chosen OS so that you can open many new sockets and achieve heavy load.
Open Files Limit¶
Most operating systems can change the open-files limit using the
ulimit -n command. Example:
$ ulimit -n 65536
However, this only changes the limit for the current shell session. Changing the limit on a system-wide, permanent basis varies more between systems.
To permanently set the soft and hard values for all users of the system to allow for up to 65536 open files ; edit
/etc/security/limits.conf and append the following two lines:
* soft nofile 65535 * hard nofile 65535
Save the file. Start a new session so that the limits take effect. You can now verify with
ulimit -a that the limits are correctly set.
For Debian and Ubuntu, you should enable PAM user limits. To do so, add
session required pam_limits.so in:
/etc/pam.d/common-session-noninteractiveif the file exists
/etc/pam.d/sshdif you access the machine via SSH
Also, if accessing the machine via SSH, be sure to have
UseLogin yes in
For more tuning, you may want to do the following:
# more ports for testing sudo sysctl -w net.ipv4.ip_local_port_range="1025 65535" # increase the maximum number of possible open file descriptors: echo 300000 | sudo tee /proc/sys/fs/nr_open echo 300000 | sudo tee /proc/sys/fs/file-max
Kernel and Network Tuning¶
Consider tuning kernel and network and add this kind of following settings in /etc/sysctl.conf:
net.ipv4.tcp_max_syn_backlog = 40000 net.core.somaxconn = 40000 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_moderate_rcvbuf = 1 net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.tcp_mem = 134217728 134217728 134217728 net.ipv4.tcp_rmem = 4096 277750 134217728 net.ipv4.tcp_wmem = 4096 277750 134217728 net.core.netdev_max_backlog = 300000