首页/网络/网络排障速查/tcp_tw_reuse 与本地端口耗尽处置

tcp_tw_reuse 与本地端口耗尽处置

客户端短连接打满本地端口的处置组合:开启 tcp_tw_reuse 复用时序安全的 TW 连接、扩大 ip_local_port_range、并让应用改用连接池;tcp_tw_recycle 已从内核移除。

网络排障速查网络更新于 2026-10-13

本地端口耗尽怎么处置

本机作为客户端大量发短连接时,每条连接结束后会在本地留下一个 TIME-WAIT 状态,占用一个源端口大约 60 秒。当并发量足够高时,可用源端口被耗尽,新建连接开始失败,报错通常是 cannot assign requested address。处置是组合拳:开启 tcp_tw_reuse 复用时序安全的 TIME-WAIT 连接、扩大本地端口范围、并让应用改用连接池或长连接。

基本信息

适用平台Linux(net.ipv4 命名空间下的 sysctl 参数)
核心参数net.ipv4.tcp_tw_reuse、net.ipv4.ip_local_port_range、net.ipv4.tcp_max_tw_buckets
依赖条件tcp_tw_reuse 依赖 tcp_timestamps(默认开启)
生效范围只对客户端主动发起的连接生效,服务端被动关闭侧不受益
已废弃参数tcp_tw_recycle 因影响 NAT 环境,已在 Linux 4.12 移除

典型使用场景

  • 网关或代理类服务大量外呼后新建连接失败:确认是否源端口耗尽
  • 压测时出现间歇性连接失败:区分是被测服务限流还是本机端口不足
  • 评估是否要调大端口范围:结合 ss -s 的 timewait 数量判断
  • NAT 网关后端服务偶发失败:检查连接复用与端口回收策略
  • 老系统迁移:清理仍在生效的废弃参数配置,避免照抄旧文档

现状核对与配置

现状核对与配置
sysctl net.ipv4.tcp_tw_reuse net.ipv4.tcp_timestamps net.ipv4.ip_local_port_range   # 现状
ss -s | grep -i timewait                       # 当前 TIME-WAIT 规模
ss -tan state time-wait | wc -l                # 精确计数
# 写入配置文件后执行 sysctl -p 生效
# /etc/sysctl.d/99-net-tune.conf
# net.ipv4.tcp_tw_reuse = 1
# net.ipv4.ip_local_port_range = 10240 65000
# net.ipv4.tcp_max_tw_buckets = 65536
sysctl --system                                 # 应用全部 sysctl 配置文件

参数与作用

参数作用注意事项
tcp_tw_reuse允许客户端在时序安全时复用 TIME-WAIT 端口依赖时间戳;仅对主动发起侧生效
ip_local_port_range本机可用源端口范围扩大范围同时增加冲突概率,需评估
tcp_max_tw_bucketsTIME-WAIT 表的上限上限过低会导致内核提前回收并打印告警
tcp_timestamps时间戳选项tcp_tw_reuse 的前提,默认开启不要关
tcp_tw_recycle已被内核移除旧文档常见,照抄会直接报错
tcp_tw_reuse 只解决客户端主动发起方向的端口复用,且依赖 tcp_timestamps;老文档里的 tcp_tw_recycle 在 NAT 环境会造成丢包,内核 4.12 起已删除,不要开启。

易错点

  • 照抄旧文档开启 tcp_tw_recycle:新内核上该参数已不存在,命令直接报错,误以为配置生效
  • 只调内核参数不改应用连接方式:QPS 上量后问题原样复现,连接池与长连接才是根本解法
  • 把服务端的 TIME-WAIT 也指望 tcp_tw_reuse 解决:该参数只作用于主动发起连接的一方,方向判断错就白调
  • 扩大端口范围却不排查端口冲突:范围重叠或 NAT 场景下冲突概率上升,可能出现新的偶发失败

数据来源与参考

  • Linux 内核文档:ip-sysctl(tcp_tw_reuse)
  • Linux 4.12 变更说明:移除 tcp_tw_recycle

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌