GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beim Ausführen von lsof -i werden viele Verbindungen in CLOSE_WAIT angezeigt? Sollte ich mir Sorgen machen

(Ich wollte Mikegrbs Antwort bearbeiten, entschied aber, dass ich sie ein wenig zu sehr schlachtete)

CLOSE_WAIT bedeutet ziemlich genau das, was es sagt - der Kernel wartet darauf, dass der lokale Prozess seinen Dateideskriptor schließt, bevor er den Eintrag entfernt. Die TCP-Verbindung wurde vollständig abgebaut und die Gegenseite hat möglicherweise den Eindruck, dass die Verbindung endlich ist, aber Ihre Seite hält an den Dingen fest.

Die einzige Sorge ist, dass viele CLOSE_WAIT-Einträge Kernelspeicher und Dateideskriptortabelleneinträge verbrauchen, was ein Problem sein kann, wenn es große Stapel davon gibt. Wenn die Einträge, die Sie sich ansehen, vorübergehend sind, dann liegt es wahrscheinlich daran, dass Sie viel radeln von TCP-Verbindungen, und Sie sehen einen kleinen Bruchteil davon in der kurzen Zeitspanne zwischen dem Schließen der Verbindung und dem Schließen des Dateideskriptors. Auf der anderen Seite, wenn sie dauerhaft sind (die Ports und IP-Adressen ändern sich nicht im Laufe der Zeit), dann sind Deskriptoren undicht und es muss behoben werden, damit es immer seine fds schließt, wenn es mit ihnen fertig ist. Wie mikegrb sagte, könnte eine neuere Version das Problem bereits behoben haben, daher ist eine Frage auf der entsprechenden Mailingliste oder eine Untersuchung der Änderungsprotokolle wahrscheinlich gerechtfertigt.


CLOSE_WAIT-Zustand bedeutet, dass das andere Ende ein FIN-Segment gesendet hat, um die Verbindung zu schließen. Die Verbindung ist noch irgendwie hergestellt. Es befindet sich in einem Modus, den Sie sich als Halbduplex vorstellen können, der es diesem Ende ermöglicht, alle Puffer zu leeren und die letzten Datenbits an das Ende zu senden, um die Schließung der Verbindung anzufordern, bevor die Verbindung von diesem Ende geschlossen wird.

Wenn Sie viele Verbindungen haben, die in CLOSE_WAIT bleiben, bedeutet dies, dass der verantwortliche Prozess den Socket nicht schließt, sobald er in CLOSE_WAIT geht. Sie können tcpdump oder andere Tools zur Erfassung des Netzwerkverkehrs verwenden, um sich die Pakete anzusehen.

Werfen Sie auch einen Blick auf den verantwortlichen Prozess. Aus Neugier, was ist der verantwortliche Prozess? Möglicherweise ist eine neuere gefixte Version verfügbar oder vielleicht ist es an der Zeit, einen Fehlerbericht einzureichen;)


Linux
  1. Benachrichtigen-Senden als root ausführen

  2. Untersuchen mehrerer Ports beim Ausführen von NetCat (nc)

  3. Listen Sie den aktuell ausgeführten Cron-Tab auf und stoppen Sie ihn

  4. Als welcher Benutzer sollten Apache und PHP ausgeführt werden? Welche Berechtigungen sollten /var/www-Dateien haben?

  5. PuTTY-, CygwinX- und X11-Weiterleitungsverbindung abgelehnt

Linux-Bildschirmbefehl:Prozesse trotz unterbrochener Verbindung weiterlaufen lassen

Überprüfen, ob ein Skript ausgeführt wird?

Warum zeigt die „netstat“-Ausgabe viele Verbindungen im CLOSE_WAIT-Status?

Linux:Kein Speicherplatz mehr auf dem Gerät, während der df-Befehl viel freien Speicherplatz anzeigt

Wie entferne ich eine CLOSE_WAIT-Socket-Verbindung?

Wie erhalte ich nur die PID ohne zusätzliche Informationen eines Prozesses, der auf Port 3000 läuft?