Linux Kernel Tuning für Web: somaxconn, tcp_tw_reuse, backlog richtig setzen

Für Webserver unter Linux ist das richtige Kernel-Tuning essenziell, um hohe Lasten zuverlässig zu bewältigen. Parameter wie somaxconn, tcp_tw_reuse oder backlog steuern die Art und Weise, wie der Kernel eingehende TCP-Verbindungen puffert und wiederverwendet. Falsche Einstellungen können zu Verbindungsabbrüchen, SYN-Backlogs oder unnötiger Ressourcennutzung führen. In diesem Artikel erklären wir praxisnah, wie diese Parameter korrekt gesetzt werden, welche Zusammenhänge bestehen und wie typische Fehler vermieden werden.

TCP Backlog und somaxconn

Das TCP-Backlog definiert, wie viele eingehende Verbindungen ein Server in der Warteschlange halten kann, bevor er sie akzeptiert. Der Kernel begrenzt die maximale Warteschlangenlänge durch den Parameter somaxconn.

Überprüfung des aktuellen Wertes

cat /proc/sys/net/core/somaxconn

Anpassung temporär

sudo sysctl -w net.core.somaxconn=65535

Dauerhafte Anpassung

echo "net.core.somaxconn = 65535" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Praxis-Tipp

Für Nginx oder Apache unter hoher Last sollten somaxconn und der listen backlog in der Webserver-Konfiguration aufeinander abgestimmt werden, z.B.:

listen 80 backlog=65535;

TIME-WAIT und tcp_tw_reuse

Jede TCP-Verbindung durchläuft nach dem Schließen den TIME-WAIT-Zustand, um sicherzustellen, dass verspätete Pakete korrekt behandelt werden. Unter hoher Last können viele TIME-WAIT-Sockets Ressourcen binden.

Aktivierung von tcp_tw_reuse

sudo sysctl -w net.ipv4.tcp_tw_reuse=1

Dauerhafte Konfiguration

echo "net.ipv4.tcp_tw_reuse = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Risiken

  • Nur für Clients sicher, nicht für Server-Sockets, die eingehende Verbindungen akzeptieren
  • Kann bei fehlerhafter Anwendung zu Paketen für alte Verbindungen führen

TCP Keepalive und tcp_fin_timeout

Der Parameter tcp_fin_timeout bestimmt, wie lange eine geschlossene Verbindung im FIN-WAIT-2-Zustand gehalten wird. Ein kurzer Timeout spart Ressourcen.

sudo sysctl -w net.ipv4.tcp_fin_timeout=30

Für stark frequentierte Webserver empfiehlt sich eine Kombination aus aktivem Keepalive in der Anwendung und angepasstem FIN-Timeout.

Netfilter und nf_conntrack

Unter hohen Verbindungszahlen kann auch die Connection Tracking Tabelle in der Firewall ein Limit erreichen.

Überprüfung

cat /proc/sys/net/netfilter/nf_conntrack_max

Anpassung

sudo sysctl -w net.netfilter.nf_conntrack_max=262144

Optimale Kombination für Webserver

  • somaxconn hoch setzen, z.B. 65535
  • Webserver-Backlog entsprechend anpassen
  • tcp_tw_reuse=1 aktivieren für Client-Verbindungen
  • tcp_fin_timeout auf 30–60 Sekunden setzen
  • Connection Tracking Tabelle prüfen und ggf. erhöhen
  • Monitoring einrichten, um SYN- und TIME-WAIT-Werte zu beobachten

Monitoring und Troubleshooting

Mit den folgenden Befehlen lassen sich wichtige Kennzahlen live überwachen:

# Aktive Verbindungen
ss -s

# TIME-WAIT Sockets
ss -tn state time-wait

# SYN Queue
netstat -s | grep -i syn

Zusammenfassung

Die richtige Abstimmung von somaxconn, tcp_tw_reuse und backlog ist entscheidend, um Webserver unter hoher Last stabil zu betreiben. Durch Monitoring und iterative Anpassung lassen sich Ressourcen effizient nutzen, Verbindungsabbrüche vermeiden und die Performance signifikant verbessern. Eine koordinierte Konfiguration zwischen Kernel, Webserver und Anwendung garantiert eine robuste Infrastruktur für moderne Web-Stacks.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles