批量的 TIME_WAIT
的 TCP 连接
此时有两种情况
1、短时间后,所有的 TIME_WAIT
全都消失,被回收,端口包括服务,均正常。
即,在高并发的场景下,TIME_WAIT
连接存在,属于正常现象。
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