Unabhängiger Vergleich · keine bezahlten Platzierungen
Startseite / Blog / Technik / TCP-Keepalive: Halten Sie nützliche Verbindungen aufrecht, ohne sie abzubrechen

TCP-Keepalive: Halten Sie nützliche Verbindungen aufrecht, ohne sie abzubrechen

Lange Verbindungen werden stillschweigend unterbrochen, wenn ein NAT oder Load Balancer inaktive Datenflüsse unterbricht. Das TCP-Keepalive ermöglicht es, sie zu erkennen – vorausgesetzt, man verwechselt sie nicht mit dem Anwendungs-Heartbeat.

Redaktion Hébergeurs.eu 4 Min.

Ihr PostgreSQL-Verbindungspool gibt plötzlich „Server hat die Verbindung unerwartet geschlossen“ zurück. Ihr WebSocket-Client stellt alle zehn Minuten eine neue Verbindung her. Ihre gRPC-API funktioniert lokal, aber in der Produktion hinter einem Load Balancer werden lange Streams ohne Anwendungsprotokolle abgeschnitten.

Der Schuldige ist nicht immer ein Codefehler. Oft hat ein Zwischengerät eine TCP-Leerlaufsitzung beendet, und niemand bemerkte es – bis zum nächsten Schreibvorgang.

Leerlauf-Timeout: Wer schneidet es ab und wann

SchichtTypischer Leerlauf-TimeoutKonsequenz
NAT-Box / 4G30 Sek. – 5 Min.App-seitige „Zombie“-Verbindung
Load-Balancer-Cloud60er – 3500erStilles Herunterfahren während der Anforderung
Stateful-FirewallVariiertDrop ohne eigenes RST
DB-ServerStundenSeltener im Standard

Ohne Datenverkehr verschwindet die Sitzung aus der Statustabelle des Vermittlers. Ihr Prozess glaubt immer noch, dass er verbunden ist.

Keepalive dient dazu, frühzeitig zu erkennen, dass der Pfad tot ist – und nicht, um eine Architektur zu ersetzen, die nützlichen Datenverkehr aufrechterhält.

TCP-Keepalive auf Kernel-Ebene

Linux sendet leere TCP-Probes nach einer Zeit der Inaktivität („tcp_keepalive_time“, Standard ~7200 s – oft zu lang für das Web).

Nützliche Einstellungen:

„Bash sysctl -w net.ipv4.tcp_keepalive_time=600 sysctl -w net.ipv4.tcp_keepalive_intvl=30 sysctl -w net.ipv4.tcp_keepalive_probes=5


Aktivieren Sie „SO_KEEPALIVE“ auf kritischen Server-Sockets (PostgreSQL „tcp_keepalives_*“, Redis, Proxys).



**Einschränkung**: Keepalive durchläuft nicht immer HTTP-Proxys, die TCP beenden. Legen Sie hinter Nginx auch „proxy_read_timeout“ und „proxy_send_timeout“ fest.



:::Hinweis

**Zur Erinnerung.** Keepalive TCP = Erkennung toter Peers. Anwendungs-Heartbeat = Geschäftslogik + Erkennung. Die beiden ergänzen sich; „none“ ersetzt einen schlecht konfigurierten Timeout-Load-Balancer.

:::



## Anwendungs-Heartbeat: Wenn TCP nicht ausreicht



Für WebSocket-, SSE- oder DB-Verbindungen über Pooler:



- **WebSocket**: RFC 6455 Ping/Pong oder periodische JSON-Nachricht (< NAT-Intervall).

- **ORM-Pools**: `pool_pre_ping` (SQLAlchemy), Abfragevalidierung beim Auschecken.

- **Nachrichtenwarteschlangen**: AMQP-Heartbeat, regelmäßige Verbraucherbestätigung.



Kalibrieren Sie das Intervall **unter** dem kürzesten Timeout in der Kette (NAT < LB < app).



## Load Balancer und Cloud-Host



Für verwaltete Angebote gelten feste Zeitüberschreitungen:



- AWS ALB im Leerlauf: bis zu 4000 s konfigurierbar.

- Nginx-Standard: 60 s auf dem Proxy.

- Cloudflare: 100 s bei klassischen HTTP-Verbindungen.



Lesen Sie das Dokument für *Ihre* Ebene – und stellen Sie dann Keepalive + Heartbeat entsprechend ein. Öffnen Sie ein Host-Support-Ticket, wenn das Standard-Timeout mit Ihren langen Flows nicht kompatibel ist.



## Oben: Eine „offene“ Verbindung ist möglicherweise bereits tot



:::Höhepunkt

**Fehler treten beim nächsten Schreibvorgang auf, nicht beim Herunterfahren.** Aus diesem Grund geben Pools ohne Validierung unter Last „zufällige“ Fehler zurück. Keepalive verringert das Unsicherheitsfenster – es entbindet jedoch nicht von der Verpflichtung, Wiederverbindungen ordnungsgemäß auf der Anwendungsseite zu handhaben.

:::



Die endgültige Robustheit bleibt in Ihrem Wiederholungs- und Wiederverbindungscode.



## Entscheide dich und gehe ohne blinden Fleck voran



1. **Machen Sie die Zeitüberschreitungen** von NAT, LB, Proxy und DB in einem Diagramm zuordnen.

2. **SO_KEEPALIVE aktivieren** + angepasste Sysctl-Einstellungen auf Servern.

3. **Anwendungs-Heartbeat hinzufügen** für WebSocket und langlebige Pools.

4. **Lasttest** mit bewussten Leerlaufverbindungen.



Vergleichen Sie Hosts und ihre Netzwerkgrenzen in unserem [Verzeichnis](/de/verzeichnis/).



## Häufig gestellte Fragen



### Was ist der Unterschied zwischen TCP-Keepalive und Anwendungs-Heartbeat?



Keepalive = Kernel prüft, ob ein toter Peer erkannt wird. Heartbeat = Geschäftsnachricht, die auch die Latenz messen oder eine Sitzung aktualisieren kann.



### Warum brechen meine DB-Verbindungen nach 5 oder 15 Minuten ab?



NAT, Firewall oder Load Balancer schließen inaktive Sitzungen; Der Client geht davon aus, dass die Verbindung offen ist.



### Welche Linux-Einstellungen sollte ich anpassen?



tcp_keepalive_time, tcp_keepalive_intvl, tcp_keepalive_probes – kürzere Zeit bei kurzen Zwischen-Timeouts.



### Verbraucht Keepalive viel Bandbreite?



Nein – ein paar Bytes pro Sonde; Vermeiden Sie ein zu aggressives Intervall bei Tausenden von Verbindungen.



---



Eine nützliche Verbindung ist nicht eine, die in einer Tabelle offen bleibt, sondern eine, die zwischen zwei tatsächlichen Anfragen **stille NATs überlebt**.

Europäische Hoster vergleichen

Filtern nach Compliance, Standort und Einsatzzweck — dann die Datenblätter öffnen, um den echten Umfang zu prüfen.

Verzeichnis durchsuchen
Blog

Weiterlesen

Alle Artikel →