Site icon bintorosoft.com

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

A tiny penguin chick sits on a keyboard, exploring the computer. Its fluffy appearance and curious expression create a delightful scene.

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

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

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:

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

Exit mobile version