Heim >Java >javaLernprogramm >Wie verhindert TCP-Keep-Alive veraltete Socket-Verbindungen?
Ja, es gibt einen Timeout-Mechanismus für TCP-Socket-Verbindungen namens TCP Keep-Alive. Es verhindert, dass Socket-Verbindungen auf unbestimmte Zeit offen bleiben, und behebt Szenarien, in denen eine Seite die Verbindung beendet, ohne die andere zu benachrichtigen.
TCP Keep-Alive kann unter Linux wie folgt konfiguriert werden Eigenschaften:
Der Prozess beinhaltet das Senden leerer ACK-Pakete in regelmäßigen Abständen, bis eine Antwort empfangen wird. Wenn nach einer bestimmten Anzahl von Tests keine Antwort eingeht, wird die Verbindung beendet.
Keep-Alive-Pakete sind optional und werden möglicherweise nicht zuverlässig übertragen. In der Praxis unterstützen jedoch die meisten Betriebssysteme und Cloud-Anbieter diesen Mechanismus.
Pro Socket-Konfiguration (Java 11 und höher):
Java 11 führte die Möglichkeit ein, TCP-Timeouts auf Socket-Ebene mithilfe von nativem Code zu konfigurieren.
Systemweite Konfiguration:
Für ältere Versionen von Java und Auf anderen Betriebssystemen müssen Sie möglicherweise eine Timeout-Konfiguration auf Systemebene anwenden.
Linux:
# Echo commands to modify the values in /proc echo 180 > /proc/sys/net/ipv4/tcp_keepalive_time echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl
Mac OS X:
# Use sysctl to modify values sysctl -w net.inet.tcp.keepidle=180000 net.inet.tcp.keepintvl=10000 net.inet.tcp.keepcnt=3
Windows:
Registrierungsschlüssel: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters
Das obige ist der detaillierte Inhalt vonWie verhindert TCP-Keep-Alive veraltete Socket-Verbindungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!