当我们在端口 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
连接,释放这些连接的唯一方法就是杀死它。
这是应用程序中的错误,最好的解决方案是修复它。 (我并不是说这是可行或现实的。)或者,您可以使用调试器连接到它并关闭调试器的连接......