extract webserver-based optimisations to reverse-proxy role
2 files changed, 33 insertions(+), 36 deletions(-)
changed files
M system/hosts/linde.nix → system/hosts/linde.nix
@@ -157,42 +157,6 @@ enable = true; algorithm = "zstd"; }; - boot.kernel.sysctl = - let - buffer_size = 16 * 1024 * 1024; - server_count = 2; - max_clients = 100; - page_size = 4096; - # This server might have 100 clients simultaneously, so: - # max(tcp_wmem) * 2 * 100 / 4096 - mem = toString (buffer_size * server_count * max_clients / page_size); - in - { - "net.ipv4.tcp_allowed_congestion_control" = "bbr illinois reno"; - "net.ipv4.tcp_congestion_control" = "bbr"; - "net.core.default_qdisc" = "fq"; - - # Provide adequate buffer memory. - # rmem_max and wmem_max are TCP max buffer size - # settable with setsockopt(), in bytes - # tcp_rmem and tcp_wmem are per socket in bytes. - # tcp_mem is for all TCP streams, in 4096-byte pages. - # The following are suggested on IBM's - # High Performance Computing page - "net.core.rmem_max" = buffer_size; - "net.core.wmem_max" = buffer_size; - "net.core.rmem_default" = buffer_size; - "net.core.wmem_default" = buffer_size; - "net.ipv4.tcp_rmem" = "4096 87380 ${toString buffer_size}"; - "net.ipv4.tcp_wmem" = "4096 87380 ${toString buffer_size}"; - "net.ipv4.tcp_mem" = "${mem} ${mem} ${mem}"; - - "net.ipv4.tcp_sack" = false; - "net.ipv4.tcp_dsack" = false; - - "net.ipv4.tcp_slow_start_after_idle" = false; - }; - security.sudo.extraConfig = '' Defaults:root,%wheel env_keep+=EDITOR '';
M system/roles/reverse-proxy.nix → system/roles/reverse-proxy.nix
@@ -64,4 +64,37 @@ ]; systemd.services.caddy.serviceConfig = { ReadWritePaths = [ "/run/web" ]; }; + + boot.kernel.sysctl = + let + buffer_size = 16 * 1024 * 1024; + server_count = 2; + max_clients = 100; + page_size = 4096; + # This server might have 100 clients simultaneously, so: + # max(tcp_wmem) * 2 * 100 / 4096 + mem = toString (buffer_size * server_count * max_clients / page_size); + in + { + # Provide adequate buffer memory. + # rmem_max and wmem_max are TCP max buffer size + # settable with setsockopt(), in bytes + # tcp_rmem and tcp_wmem are per socket in bytes. + # tcp_mem is for all TCP streams, in 4096-byte pages. + # The following are suggested on IBM's + # High Performance Computing page + "net.core.rmem_max" = buffer_size; + "net.core.wmem_max" = buffer_size; + "net.core.rmem_default" = buffer_size; + "net.core.wmem_default" = buffer_size; + "net.ipv4.tcp_rmem" = "4096 87380 ${toString buffer_size}"; + "net.ipv4.tcp_wmem" = "4096 87380 ${toString buffer_size}"; + "net.ipv4.tcp_mem" = "${mem} ${mem} ${mem}"; + + "net.ipv4.tcp_sack" = false; + "net.ipv4.tcp_dsack" = false; + + "net.ipv4.tcp_slow_start_after_idle" = false; + }; + }