We recommend to use an up-to-date kernel. Versions 4.x or above are recommended.
If you are using CentOS or RHEL, you should consider to switch to Debian or Ubuntu in order to get a newer kernel.
Using TCP Illinois module can improve speed by managing congestion diffrently.
More information on Wikipedia's page : https://en.wikipedia.org/wiki/TCP-Illinois
Check if the module is available on your system :
$ ls /lib/modules/$(uname -r)/kernel/net/ipv4/tcp_illinois.ko
/lib/modules/4.4.0-135-generic/kernel/net/ipv4/tcp_illinois.ko
If the previous command returns the file path, it's available, we can load it :
echo "tcp_illinois" > /etc/modules-load.d/tuning-nperf.conf
Tell kernel to use tcp_illinois as default congestion control algorithm :
echo "net.ipv4.tcp_congestion_control=illinois" >> /etc/sysctl.d/tuning-nperf.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.d/tuning-nperf.conf
echo "net.ipv4.tcp_rmem=4096 87380 33554432" >> /etc/sysctl.d/tuning-nperf.conf
echo "net.ipv4.tcp_wmem=4096 65536 33554432" >> /etc/sysctl.d/tuning-nperf.conf
echo "net.core.rmem_max=67108864" >> /etc/sysctl.d/tuning-nperf.conf
echo "net.core.wmem_max=67108864" >> /etc/sysctl.d/tuning-nperf.conf
This sets the max OS receive and send buffers sizes for all types of connections.
echo "net.core.netdev_max_backlog=10000" >> /etc/sysctl.d/tuning-nperf.conf
echo "net.ipv4.tcp_timestamps=0" >> /etc/sysctl.d/tuning-nperf.conf