首页/云/云网络与负载均衡速查/NAT 会话与端口资源耗尽

NAT 会话与端口资源耗尽

SNAT 本质是地址与端口的映射:单个 EIP 可支撑的并发连接与端口数量有上限。实例多、短连接多时会出现连接失败或超时,而带宽远未打满——这类问题排查时容易走向错误方向。

NAT 会话与端口资源

SNAT 的本质是地址与端口的映射:一个 EIP 能支撑的并发连接数、可用的源端口数量都有上限。实例多、短连接多时,出口的端口资源会被快速占满,表现为新建连接失败或超时,而已有连接照常工作、带宽也远没打满。这类问题最容易排查跑偏——带宽指标正常会让人去怀疑对端服务,实际上瓶颈在自己出口的连接规格上。

基本信息

成因端口资源与并发连接规格被占满
症状新建连接失败或超时、已有连接正常、带宽不高
缓解手段增加出口 EIP、应用改长连接、复用连接池、错峰重试
监控NAT 网关并发连接数与新建连接速率指标

典型使用场景

  • 监控或拨测类业务高频发起短连接,快速消耗出口端口
  • 同步任务在整点集中启动,瞬时新建连接速率超过规格上限
  • 多台实例共用一条小带宽的 NAT 网关,连接数先于带宽触顶
  • 应用未使用连接池,每次请求都重新建连,放大端口消耗

实例侧观察连接状态

实例侧观察连接状态
ss -s
ss -tan state time-wait | wc -l
ss -tan state established | wc -l
# 按对端统计连接数,找出高频短连接的来源
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head

症状与判断

症状判断方向
带宽不高但新连接失败出口连接数或端口资源触顶
TIME_WAIT 数量异常高短连接密集,需改造连接复用
特定时段集中失败任务集中启动,考虑错峰
新增 EIP 后缓解确认为出口 SNAT 容量问题
短连接密集型业务(探测、HTTP 短连)容易触发端口耗尽,优先改造连接复用。

怎么确认是端口耗尽

确认是否为出口端口资源耗尽,可以按三步走:先看云监控里 NAT 网关的并发连接数与新建连接速率是否贴近规格上限;再在实例上用 ss 统计 TIME_WAIT 与已建立连接的数量,看是否远高于常态;最后对比故障时间点与业务调用高峰是否重合。三项都指向同一时段基本可以确认。验证方式也很直接——临时增加一个出口 EIP 扩容地址池,若新建连接失败率明显下降,就说明此前确实是出口容量不足,而不是对端服务的问题。

易错点

  • 只盯带宽指标,看不出端口资源已经耗尽
  • 把连接失败归因于对端服务,忽略自身出口的连接数上限
  • 多个业务共用同一 NAT 网关,一个业务的突发拖垮其他业务
  • 通过加大重试次数掩盖问题,反而进一步抬高新建连接速率

数据来源与参考

  • 阿里云 NAT 网关文档
  • 阿里云云监控文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌