本文主要是介绍TCP连接大量CLOSE_WAIT状态问题排查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CLOSE_WAIT产生原因
close_wait是被动关闭连接是形成的,根据TCP状态机,服务器端收到客户端发送的FIN,TCP协议栈会自动发送ACK,链接进入close_wait状态。但如果服务器端不执行socket的close()操作,状态就不能由close_wait迁移到last_ack,则系统中会存在很多close_wait状态的连接,如下图所示:
可能的原因如下:
关闭socket不及时:例如I/O线程被意外阻塞,或者I/O线程执行的用户自定义Task比例过高,导致I/O操作处理不及时,链路不能被及时释放。
CLOSE_WAIT问题排查
程序Bug,接收到FIN信号后没有及时关闭socket,这可能是Netty的Bug,也可能是业务层Bug;
关闭socket不及时:例如I/O线程被意外阻塞,或者I/O线程执行的用户自定义Task比例过高,导致I/O操作处理不及时,链路不能被及时释放。
---------------------
作者:库昊天
来源:CSDN
原文:https://blog.csdn.net/yangguosb/article/details/79095255
版权声明:本文为博主原创文章,转载请附上博文链接!
这篇关于TCP连接大量CLOSE_WAIT状态问题排查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!