![CLOSE_WAIT 在 Windows 上保持进程活动](https://linux22.com/image/534937/CLOSE_WAIT%20%E5%9C%A8%20Windows%20%E4%B8%8A%E4%BF%9D%E6%8C%81%E8%BF%9B%E7%A8%8B%E6%B4%BB%E5%8A%A8.png)
我在 Windows 服务器上运行了几个 Java 进程。我注意到,当我尝试终止进程时,它有时会保持活动状态。原因似乎是与该进程相关的套接字处于 CLOSE_WAIT 状态。
知道为什么在我尝试终止该进程后某些套接字仍处于 CLOSE_WAIT 状态吗?
谢谢
答案1
由于硬件问题,该进程处于不可中断的等待状态,可能需要重新启动。只有硬件出现问题时才会发生这种情况。
............. 德拉米尔·多德贾 http://dramildodeja.webnode.com/
答案2
一个想法 - 您需要调整 TCP 设置,完全不熟悉 Windows,但通常您希望缩短TIME_WAIT
或CLOSE_WAIT
间隔,以便连接不会停留太久。在繁忙的服务器上,堆积在您身上的套接字会CLOSE_WAIT
达到数万个,并无谓地消耗资源...您可以嗅探接口、winpcap 等,看看是否发送了 fin,正确的(非重置)关闭应如下所示:
TCP: .... 0... = (No push)
TCP: .... .0.. = (No reset)
TCP: .... ..0. = (No SYN)
TCP: .... ...1 = FIN
您可以跟踪或捆绑应用程序,例如,如果它使用closesocket()
,请确保您获得的 rc 为 0,等等。