Hello,
Running a SimpleHelp server with about 700 permenant hosts, I’ve had a lot of trouble with performance.
Here are some of the work I’ve done to improve speed:
-
The bad proxy
Most of my clients are behind Watchguard firewalls, which tend to have http/https proxy rules.
I’ve managed to create rules for SimpleHelp (http/tcp, http/udp, https/tcp and https/udp) that bypass the http(s) proxy of the UTM firewalls, which resolved some of the speed issues I had. -
The server itself
My server has a public IP, and the only firewall between simplehelp and the internet is the linux firewall that comes with CentOS 7.
I still tried to sqeeze the most out of the server by modifying the following
2.1. General tuning
There’s a system tuning tool in CentOS called tuned which has a network-latency preset so I gave that a try:
yum install tuned
systemctl enable --now tuned
tuned-adm profile network-latency
The network-latency presets can be found in /usr/lib/tuned/network-latency/tuned.conf
2.2 kernel
CentOS 7 comes with kernel 3.10, whereas some major tcp performance enhancements came with 4.9 series, so I upgraded the stock kernel using the elrepo provided kernels.
yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml
reboot
2.3. Tcp scheduler
In order to achieve better performance, I switched the tcp scheduler from cubic to bbr (Bottleneck Bandwidth and RTT)
Added the following two lines in /etc/sysctl.conf
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
Applied by running the following command:
sysctl --system
2.4. Other tcp settings
Providing that my simplehelp clients may have various MTU settings, I decided to set another batch of tcp stack optimizations in /etc/sysctl.conf
net.ipv4.tcp_mtu_probing=1
net.ipv4.tcp_slow_start_after_idle=0
Applied by running the following command:
sysctl --system
Now here I am with a (hopefully) well tuned server for running SimpleHelp.
This setup may still be widely improved regarding IRQs, hardware polling, cpu sticky processes, changing firewalld backend to nftables…
I’d love to hear about your experiences and performance tips for running a smooth SimpleHelp server too
Best regards.