CLOSE_WAIT产生原因

  close_wait是被动关闭连接是形成的,根据TCP状态机,服务器端收到客户端发送的FIN,TCP协议栈会自动发送ACK,链接进入close_wait状态。但如果服务器端不执行socket的close()操作,状态就不能由close_wait迁移到last_ack,则系统中会存在很多close_wait状态的连接,如下图所示:
TCP连接大量CLOSE_WAIT状态问题排查
可能的原因如下:

  1. 关闭socket不及时:例如I/O线程被意外阻塞,或者I/O线程执行的用户自定义Task比例过高,导致I/O操作处理不及时,链路不能被及时释放。

CLOSE_WAIT问题排查

  1. 程序Bug,接收到FIN信号后没有及时关闭socket,这可能是Netty的Bug,也可能是业务层Bug;
  2. 关闭socket不及时:例如I/O线程被意外阻塞,或者I/O线程执行的用户自定义Task比例过高,导致I/O操作处理不及时,链路不能被及时释放。

相关文章:

  • 2021-07-10
  • 2021-07-29
  • 2021-12-26
  • 2021-08-31
  • 2021-08-24
  • 2021-09-17
  • 2021-08-18
猜你喜欢
  • 2021-11-25
  • 2021-05-06
  • 2021-09-11
  • 2021-11-17
  • 2021-11-28
  • 2021-06-21
  • 2022-02-04
相关资源
相似解决方案