← 返回首页
TIME_WAIT 的副作用与优化
- 副作用:在高并发短连接场景下(如压测、网关),主动关闭方会产生大量的 TIME_WAIT 连接,耗尽本地端口资源( ephemeral ports),导致无法建立新连接(报错 Cannot assign requested address)。
- 优化方案(需谨慎):
- 开启 tcp_tw_reuse (Linux):允许将 TIME_WAIT 状态的端口复用于新的外出连接(作为客户端)。这是最推荐的方案,安全且有效。
- sysctl -w net.ipv4.tcp_tw_reuse=1
- 调整 tcp_fin_timeout:缩短 TIME_WAIT 的持续时间(默认 60s),但有轻微风险。
- 避免由客户端主动关闭:在长连接场景中,尽量让服务端主动关闭连接(虽然通常不现实,因为服务端通常是无状态的)。
- 不要随意开启 tcp_tw_recycle:该选项在 NAT 环境下会导致严重的连接问题,已在较新内核中被移除或废弃。
- 开启 tcp_tw_reuse (Linux):允许将 TIME_WAIT 状态的端口复用于新的外出连接(作为客户端)。这是最推荐的方案,安全且有效。