[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Timeout für TCP-Verbindungen im CLOSE_WAIT-Status



Gruesse!
* Patrick Wunderlich <news@xkill.de> schrieb am [09.06.05 12:03]:
> Hallo,
> 
> ich habe unter Debain das Problem, dass viele TCP-Verbindungen
> zu meiner Server-Anwendungen im Status "CLOSE_WAIT" verbleiben,
> wenn die eigentliche Kommunikation beendet ist (ich schließe die
> Verbindung korrekt).

Sie bleiben auf dem Server im Close Wait State?
Sicher das die Verbindung von beiden Seiten korrekt geschlossen wird? 
Es sieht nähmlich eher so aus, als ob die Server-Anwendung auf die
Anfrage zum Verbindungsabbau (FIN) nur dieses FIN bestätigt (mit einem
ACK). Dann geht der Verbindungsstatus auf dem Server in Close Wait.

Was jetzt aber noch fehlt ist, daß der Server den wirklichen
Verbindungsabbau bestätigt (mit FIN=1,ACK=1). Jetzt erst wird die
Verbindung zurückgesetzt, was bei Erfolg der Server noch mit einem Last
ACK bestätigen sollte.

Wenn mich meine TCP Kenntnisse nicht trügen, könnte ein fehlerhafter
Server für dieses Problem die Ursache sein.

> Unter Solaris gibt es die Möglichkeit mit dem Befehl "ndd" einen
> Timeout für den Zustand "CLOSE_WAIT" zu setzen, nach dem die
> Verbindung freigegeben wird.
> 
> Gibt es etwas vergleichbares unter Debian?

Wie lange ein Close Wait bzw. der Abbruch-Vorgang dauert kannst du
unter Linux (nicht nur Debian) über eine Kernel-Variable steuern.

Für dein Problem solltest du IMHO tcp_fin_timeout niedriger setzen
(Default AFAIK 60 Sekunden).

Ein:
	sysctl net.ipv4.tcp_fin_timeout
zeigt dir den momentanen Wert.
Mit:
	sysctl -w net.ipv4.tcp_fin_timeout=<dein_Wert>
kannst du die Variable ändern.

Alle Angaben auf einen 2.4er Kernel bezogen, bei 2.6 mußt du selbst mal
schauen.

Trotzdem würde ich mir die Client-Server-Kommunikation noch mal
anschauen.

> Grüsse,
> Patrick Wunderlich

Gruß Gerhard

-- 
Heute ist das Morgen wovor du gestern Angst hattest...



Reply to: