Ubuntu Server 10.04.1 x86
Ich habe eine Maschine mit einem FCGI-HTTP-Dienst hinter nginx, der viele kleine HTTP-Anforderungen an viele verschiedene Clients bedient. (Ungefähr 230 Anfragen pro Sekunde in den Stoßzeiten, durchschnittliche Antwortgröße mit Headern beträgt 650 Bytes, mehrere Millionen verschiedener Clients pro Tag.)
Als Ergebnis habe ich viele Sockets, die in TIME_WAIT hängen (Grafik wird mit den folgenden TCP-Einstellungen erfasst):

Ich möchte die Anzahl der Steckdosen reduzieren.
Was kann ich sonst noch tun?
$ cat / proc / sys / net / ipv4 / tcp_fin_timeout 1 $ cat / proc / sys / net / ipv4 / tcp_tw_recycle 1 $ cat / proc / sys / net / ipv4 / tcp_tw_reuse 1
Update: Einige Details zum tatsächlichen Service-Layout der Maschine:
Client ----- TCP-Socket -> Nginx (Load Balancer Reverse Proxy)
----- TCP-Socket -> Nginx (Arbeiter)
--domain-socket -> fcgi-software
--single-persistent-TCP-socket -> Redis
--single-persistent-TCP-socket -> MySQL (andere Maschine)
Ich sollte wahrscheinlich Load-Balancer -> Worker-Verbindung auch auf Domain-Sockets umstellen, aber das Problem mit TIME_WAIT-Sockets würde bestehen bleiben. Ich plane, bald einen zweiten Worker auf einem separaten Computer hinzuzufügen. In diesem Fall können keine Domain-Sockets verwendet werden.