Heim  >  Artikel  >  Java  >  Wie funktioniert TCP Keep-Alive und wie lange bleiben Socket-Verbindungen offen?

Wie funktioniert TCP Keep-Alive und wie lange bleiben Socket-Verbindungen offen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 14:05:03597Durchsuche

How Does TCP Keep-Alive Work and How Long Do Socket Connections Remain Open?

Verfügt eine TCP-Socket-Verbindung über ein „Keep Alive“?

Im Gegensatz zu HTTP-Keep-Alives bleiben TCP-Socket-Verbindungen nicht auf unbestimmte Zeit offen . Stattdessen unterliegen sie einem durch TCP Keep-Alive erzwungenen Timeout-Limit.

Einführung

TCP-Verbindungen umfassen zwei Sockets, die sich jeweils an einem Ende der Verbindung befinden. Normalerweise bleiben diese Sockets geöffnet, bis ein Ende die Verbindung beendet, was durch ein FIN-Paket angezeigt wird. Wenn jedoch eine unbeabsichtigte Socket-Beendigung auftritt, ist TCP Keep-Alive vorhanden, um veraltete Verbindungen zu erkennen und zu schließen.

Keep-Alive-Prozess

Auf Linux-Systemen TCP Keep-Alive arbeitet mit den folgenden Standardeinstellungen:

  • tcp_keepalive_time: 7200 Sekunden (2 Stunden)
  • tcp_keepalive_probes: 9
  • tcp_keepalive_intvl: 75 Sekunden

Wenn eine Verbindung länger als tcp_keepalive_time inaktiv bleibt, wird ein ACK-Paket an das andere Ende gesendet. Wenn nach einer bestimmten Anzahl von Tests keine Antwort erfolgt, wird die Verbindung über RST beendet.

Probleme

2-Stunden-Standard: Standardmäßig , wird der Keep-Alive-Prozess erst nach 2 Stunden Inaktivität gestartet, was dazu führen kann, dass veraltete Verbindungen bestehen bleiben.

Keep-Alive ist optional: Das Reagieren auf Keep-Alive-Pakete ist optional und Bei einigen Implementierungen werden sie möglicherweise gelöscht.

TCP-Timeouts ändern

Um TCP-Timeouts zu ändern, lesen Sie die folgenden betriebssystemspezifischen Anweisungen:

Linux:

  • Pro Socket: Wird derzeit in Java nicht unterstützt
  • Systemweit: Verwenden Sie Echo zum Anpassen / proc/sys/net/ipv4/[tcp_keepalive_time|tcp_keepalive_probes|tcp_keepalive_intvl]

Mac OS X:

  • Systemweit: Verwenden Sie sysctl -w, um net.inet.tcp festzulegen.[keepidle|keepintvl|keepcnt]
  • Persistent: Einstellungen zu /etc/sysctl.conf hinzufügen

Windows:

  • Systemweit: Registrierungswerte in HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters bearbeiten

Das obige ist der detaillierte Inhalt vonWie funktioniert TCP Keep-Alive und wie lange bleiben Socket-Verbindungen offen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn