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 扩容地址池,若新建连接失败率明显下降,就说明此前确实是出口容量不足,而不是对端服务的问题。