Heim  >  Artikel  >  Java  >  Hier sind einige fragenbasierte Artikeltitel, die das Wesentliche Ihres Inhalts erfassen: **Konzentrieren Sie sich auf das Wesentliche:** * **Halten TCP-Socket-Verbindungen ewig? Erkunden von Keep-Alive-Timeouts** *

Hier sind einige fragenbasierte Artikeltitel, die das Wesentliche Ihres Inhalts erfassen: **Konzentrieren Sie sich auf das Wesentliche:** * **Halten TCP-Socket-Verbindungen ewig? Erkunden von Keep-Alive-Timeouts** *

Susan Sarandon
Susan SarandonOriginal
2024-10-26 00:20:28616Durchsuche

Here are a few question-based article titles that capture the essence of your content:

**Focusing on the Main Point:**

* **Do TCP Socket Connections Last Forever? Exploring Keep-Alive Timeouts** 
* **How Long Do TCP Socket Connections Stay Open? Decodin

TCP-Socket-Verbindungen und Keep-Alive

Das Konzept von TCP-Keep-Alive wird oft mit HTTP in Verbindung gebracht, gilt aber auch für Standard TCP-Socket-Verbindungen. Im Gegensatz zu HTTP Keep-Alive, das eine dauerhafte Verbindung für mehrere Anfragen ermöglicht, dient TCP Keep-Alive einem anderen Zweck.

Bleibt eine TCP-Socket-Verbindung automatisch für immer geöffnet?

Nein, eine TCP-Socket-Verbindung bleibt nicht automatisch auf unbestimmte Zeit geöffnet. Es gibt einen Mechanismus namens TCP Keep-Alive, der eine Zeitüberschreitung erzwingt.

TCP Keep-Alive-Prozess

TCP Keep-Alive arbeitet mit drei konfigurierbaren Parametern:

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

Wenn es für die angegebene tcp_keepalive_time keine Aktivität auf einer TCP-Verbindung gibt, sendet das System ein Keep-Alive-Paket (eine leere ACK). Wenn der Server mit einem ACK antwortet, wird der Prozess zurückgesetzt. Wenn nach der angegebenen Anzahl von tcp_keepalive_probes (mit dem tcp_keepalive_intvl Intervall zwischen den Tests) keine Antwort eingeht, wird die Verbindung mit einem RST beendet.

Probleme

  • 2-Stunden-Standard: Das standardmäßige 2-Stunden-Timeout kann dazu führen, dass veraltete Verbindungen über längere Zeit bestehen bleiben.
  • Behalten- Alive ist optional: Gemäß RFC 1122 ist die Beantwortung oder Weiterleitung von TCP-Keep-Alive-Paketen für Systeme optional. Dies bedeutet, dass Server die Timeout-Einstellungen möglicherweise nicht immer berücksichtigen. In der Praxis werden jedoch in der Regel Keep-Alive-Pakete übertragen.

TCP-Timeouts ändern

TCP-Timeout-Einstellungen können auf Betriebssystemebene geändert werden. Dies wirkt sich jedoch auf alle TCP-Verbindungen im System aus.

Linux

Verwenden Sie die folgenden Befehle, um die Einstellungen für alle Verbindungen zu ändern:

  • tcp_keepalive_time: sysctl -w net.ipv4.tcp_keepalive_time=180
  • tcp_keepalive_probes: sysctl -w net.ipv4.tcp_keepalive_probes=3
  • tcp_keepalive_intvl: sysctl -w. net .ipv4.tcp_keepalive_intvl=10

Mac OS grep -E "keepidle|keepintvl|keepcnt"

sysctl -w net.inet.tcp.keepidle=180000 net.inet.tcp.keepcnt=3 net.inet.tcp.keepintvl=10000

  • Windows
  • TCP Keep-Alive-Einstellungen finden Sie in der Registrierung:
  • HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters

Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Artikeltitel, die das Wesentliche Ihres Inhalts erfassen: **Konzentrieren Sie sich auf das Wesentliche:** * **Halten TCP-Socket-Verbindungen ewig? Erkunden von Keep-Alive-Timeouts** *. 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