Ich schreibe einen einfachen HTTP-Server und lerne TIME_WAIT kennen. Wie gehen echte Web-Server in komplexen Umgebungen mit Anfragen von Tausenden von Benutzern um, ohne dass alle Sockets in TIME_WAIT stecken bleiben, nachdem eine Anfrage bearbeitet wurde? (Nicht zu fragen, Keep-Alive - das würde für einen einzelnen Client helfen, aber nicht für Tausende von verschiedenen Clients durchkommen).
Ich habe gelesen, dass Sie versuchen, den Client zuerst zu schließen, damit alle TIME_WAITs auf alle Clients verteilt werden, anstatt sich auf den Server zu konzentrieren.
Wie wird das gemacht? Irgendwann muss der Server clos / socket aufrufen.
Der Peer, der den aktiven Abschluss initiiert, ist derjenige, der in TIME_WAIT geht. Solange der Client die Verbindung schließt, erhält der Client die TIME_WAIT und nicht den Server. Ich gehe darauf ein wenig genauer ein. in diesem Blogbeitrag .