Nehmen wir an, es gibt einen Client, der viele kurzlebige Verbindungen zu einem Server herstellt.Was kostet TIME_WAIT auf der Serverseite?
Wenn der Client die Verbindung schließt, befinden sich auf der Clientseite viele Ports im TIME_WAIT
-Status. Da der Client keine lokalen Ports mehr hat, ist es unmöglich, schnell einen neuen Verbindungsversuch zu starten. Wenn der Server die Verbindung schließt, werden auf der Serverseite viele TIME_WAIT
s angezeigt. Schadet das jedoch? Der Client (oder andere Clients) können weiterhin versuchen, Verbindungen herzustellen, da die lokalen Ports nie ausreichen und die Anzahl der TIME_WAIT
-Status auf der Serverseite steigt. Was passiert schließlich? Ist etwas Schlimmes passiert? (Verlangsamung, Absturz, unterbrochene Verbindungen usw.)
Bitte beachten Sie, dass meine Frage nicht lautet: "Was ist der Zweck von TIME_WAIT
?" aber "Was passiert, wenn es so viele TIME_WAIT
Zustände auf dem Server gibt?" Ich weiß bereits, was passiert, wenn eine Verbindung in TCP/IP geschlossen wird und warum der Status TIME_WAIT
erforderlich ist. Ich versuche nicht, es zu bemängeln, sondern möchte nur wissen, was das potenzielle Problem ist.
Um es einfach zu sagen, sagen wir netstat -nat | grep :8080 | grep TIME_WAIT | wc -l
Drucke 100000
. Was würde passieren? Verlangsamt sich der O/S-Netzwerkstack? "Zu viele offene Dateien" Fehler? Oder einfach nichts, worüber man sich Sorgen machen müsste?
Einige Systeme sehen Probleme auf "32K' TIME_WAIT' "http://serverfault.com/a/212127/87017 – Pacerier
Für Linux gibt es eine [Papier] (https://tools.ietf.org/html/draft- Faber-Time-Wait-Avoidance-00) basierend auf Daten über Webstone Benchmark. Außerdem "[* Der' TIME-WAIT'-Status in TCP und seine Auswirkung auf ausgelastete Server *] (https://scholar.google.com/scholar?cluster=2607037814764769062&hl=de&as_sdt=0,5&sciodt=0,5) ". – Pacerier