Netstat zeigt offenen Port mit PID für nicht vorhandenen Prozess an?

Netstat zeigt offenen Port mit PID für nicht vorhandenen Prozess an?

Wir haben ein Programm, das auf einem Port lauscht, um Informationen zum Ausführen eines Berichts zu erhalten. Beim Schließen und erneuten Öffnen des Programms erhalten wir eine Fehlermeldung, dass der verwendete Port bereits verwendet wird. Wenn wir uns ansehen, netstatsehen wir, dass sich 9 Instanzen dieses Ports im Status CLOSE_WAIT und 1 Instanz im Lauschen-Status befinden. Die Instanz im Lauschen-Status sagt, dass sie PID 488 gehört. Der Task-Manager zeigt, dass es keinen Prozess mit dieser ID gibt und taskkillsagt dasselbe. Die App ist eine interne .NET-Anwendung.

Dies ist eine Produktionsumgebung, daher möchten wir einen Neustart der Maschine vermeiden. Was könnte die Ursache dafür sein und was kann getan werden, um das Problem zu beheben?

Antwort1

CLOSE_WAIT bedeutet, dass der Socket ein FIN-Paket vom anderen Ende empfangen hat und darauf wartet, von der Anwendung geschlossen zu werden, die diesen Listening-Socket besitzt. Wenn Sie close() für einen Listening-Socket nicht aufrufen, kann es passieren, dass dieser herumschwebt, wie es bei Ihnen der Fall war.

Da es sich um eine interne .NET-Anwendung handelt, würde ich Ihren Quellcode noch einmal überprüfen, um sicherzustellen, dass der Socket vor dem Beenden ordnungsgemäß geschlossen wird.

Weitere Informationen zu Socket-Zuständen, einschließlich CLOSE_WAIT: http://blogs.technet.com/b/janelewis/archive/2010/03/09/explaining-close-wait.aspx

verwandte Informationen