接続を強制終了(クローズ待機)できますか?

接続を強制終了(クローズ待機)できますか?

以下のようにポート6060でlsofを実行すると、

# lsof -i TCP:6060 | more
COMMAND     PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
app_lot 3495 root   12u  IPv6  9238779      1t0  TCP *:krb0934 (LISTEN)
app_lot 3495 root   13u  IPv6  9208460      1t0  TCP linux_server45:krb0934->43.55.3.22:5992 (CLOSE_WAIT)
app_lot 3495 root   21u  IPv6  9402392      1t0  TCP linux_server45:krb0934->34.22.50.28:6005 (CLOSE_WAIT)
app_lot 3495 root   28u  IPv6  9208462      0t0  TCP linux_server45:krb0934->54.33.6.161:23096 (CLOSE_WAIT)

待っている人がたくさん見えましたが、

私たちはpidを殺したくありません - 3495

強制終了(CLOSE_WAIT)は可能ですか?

アプリケーションを再起動する必要はありません - app_lot

答え1

CLOSE_WAITこの状態(または他の状態)のソケットは外部で閉じることはできません。誤動作するプログラムが接続CLOSE_WAITを蓄積している場合は、それを解放する唯一の方法はそのプログラムを終了することです。

これはアプリケーションのバグであり、最善の解決策はこれを修正することです。 (これは可能であるか現実的ではありません)、またはデバッガを使用して接続し、デバッガ接続を閉じることもできます。

関連情報