From f74c294a0d5e9f61f13d64f3f7c028b512431995 Mon Sep 17 00:00:00 2001 From: Micah Elizabeth Scott Date: Tue, 28 Aug 2018 00:29:29 -0700 Subject: [PATCH] Suggest TCP/IP tuning to prevent buffer bloat + latency (#976) * Suggest TCP/IP CoDel and BBR congestion control in production guide This seems to be helping lots on my server, where the default (Debian 9) was to use FIFO queueing which would cause buffer bloat and huge latency for clients on slower network links. --- support/doc/production.md | 13 +++++++++++++ support/sysctl.d/30-peertube-tcp.conf | 9 +++++++++ 2 files changed, 22 insertions(+) create mode 100644 support/sysctl.d/30-peertube-tcp.conf diff --git a/support/doc/production.md b/support/doc/production.md index 3d1be6b45..35c7de3b5 100644 --- a/support/doc/production.md +++ b/support/doc/production.md @@ -134,6 +134,19 @@ On FreeBSD you can use [Dehydrated](https://dehydrated.io/) `security/dehydrated $ sudo pkg install dehydrated ``` +### TCP/IP Tuning + +**On Linux** + +``` +$ sudo cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/ +$ sudo sysctl -p /etc/sysctl.d/30-peertube-tcp.conf +``` + +Your distro may enable this by default, but at least Debian 9 does not, and the default FIFO +scheduler is quite prone to "Buffer Bloat" and extreme latency when dealing with slower client +links as we often encounter in a video server. + ### systemd If your OS uses systemd, copy the configuration template: diff --git a/support/sysctl.d/30-peertube-tcp.conf b/support/sysctl.d/30-peertube-tcp.conf new file mode 100644 index 000000000..09285bb56 --- /dev/null +++ b/support/sysctl.d/30-peertube-tcp.conf @@ -0,0 +1,9 @@ +# In a video server, we are often sending files to a client +# which can't accept it as fast as our local network connection +# could produce packets. To prevent packet loss and buffer bloat, +# it's especially important to use a modern CoDel scheduler which +# knows how to delay outgoing packets to match slower client links. + +net.core.default_qdisc = fq_codel +net.ipv4.tcp_congestion_control = bbr +