netstat は存在​​しないプロセスの pid で開いているポートを表示しますか?

netstat は存在​​しないプロセスの pid で開いているポートを表示しますか?

レポートの実行に関する情報を受信するためにポートをリッスンするプログラムがあります。プログラムを閉じて再度開くと、使用しているポートがすでに使用されているというエラーが表示されます。 を見るとnetstat、そのポートのインスタンスが CLOSE_WAIT 状態で 9 つ、リッスン状態が 1 つあることがわかります。リッスン状態にあるインスタンスは、pid 488 によって所有されていることを示しています。タスク マネージャーには、その ID のプロセスが存在しないことが示されており、taskkill同じことが示されています。このアプリは社内の .NET アプリケーションです。

これは実稼働環境なので、マシンの再起動は避けたいと考えています。原因は何でしょうか。また、修正するにはどうすればよいでしょうか。

答え1

CLOSE_WAIT は、ソケットが相手側から FIN パケットを受信し、その listen ソケットを所有するアプリケーションによって閉じられるのを待機していることを意味します。 listen ソケットで close() を呼び出さないと、ソケットが浮動状態になる可能性があります。

これは社内の .NET アプリケーションなので、終了する前にソケットが適切に close() されていることを確認するためにソース コードを再度確認します。

CLOSE_WAIT を含むソケット状態に関する詳細情報: http://blogs.technet.com/b/janelewis/archive/2010/03/09/explaining-close-wait.aspx

関連情報