大量 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理

批量的 TIME_WAIT 的 TCP 连接

大量 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理

 

此时有两种情况

1、短时间后,所有的 TIME_WAIT 全都消失,被回收,端口包括服务,均正常。

即,在高并发的场景下,TIME_WAIT 连接存在,属于正常现象。

 大量 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理

 

 

2、持续的高并发场景:

一部分 TIME_WAIT 连接被回收,但新的 TIME_WAIT 连接产生;

一些极端情况下,会出现大量的 TIME_WAIT 连接。

 

产生的影响

Nginx 作为反向代理时,大量的短链接,可能导致 Nginx 上的 TCP 连接处于 time_wait 状态:

每一个 time_wait 状态,都会占用一个「本地端口」,上限为 65535;当大量的连接处于 time_wait 时,新建立 TCP 连接会出错,address already in use : connect 异常。

注:TCP 本地端口数量,上限为 65535(6.5w),这是因为 TCP 头部使用 16 bit,存储「端口号」,因此约束上限为 65535

 

上一篇:Java并发编程:synchronized


下一篇:Java多线程(三)——线程安全