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:
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
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:
Mac OS grep -E "keepidle|keepintvl|keepcnt"
sysctl -w net.inet.tcp.keepidle=180000 net.inet.tcp.keepcnt=3 net.inet.tcp.keepintvl=10000Das 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!