VPS连接数突然打满怎么办?conntrack表、NAT状态与短连接风暴排查

从表项容量到NAT路径,区分连接跟踪耗尽与带宽故障
发布于
5

VPS连接数突然打满怎么办?conntrack表、NAT状态与短连接风暴排查

VPS突然出现新连接超时、容器请求失败,内核日志还提示nf_conntrack: table full,通常不是简单的“带宽用完”。Linux连接跟踪表负责记录经过防火墙和NAT的连接状态,短时间大量新连接、异常扫描、容器网络或UDP会话都可能让表项快速增长。

先确认是不是连接跟踪耗尽

sysctl net.netfilter.nf_conntrack_count
sysctl net.netfilter.nf_conntrack_max
dmesg -T | grep -i conntrack | tail -n 20
ss -s
cat /proc/net/nf_conntrack 2>/dev/null | head

重点看当前使用量与上限的关系、日志是否持续出现table full,以及连接状态的构成。只有看到表项逼近上限,才能把排查重点放到conntrack;如果主要是CPU、网卡队列或上游线路问题,调表容量并不能修复。

把来源拆成四类

来源 观察信号 下一步
业务短连接 ESTABLISHED很少,SYN/TIME_WAIT快速增长 检查HTTP keep-alive、连接池和重试策略
容器或NAT 宿主机连接正常,容器出口失败 核对转发路径、规则和容器网络模式
UDP会话 UDP表项多、持续时间长 确认应用超时与会话回收策略
异常流量 来源地址集中或端口扫描明显 先做入站最小化和上游安全组核验

低风险恢复顺序

  1. 保存ss -s、conntrack计数、接口流量和应用日志,建立故障时间线。
  2. 在云安全组和主机防火墙层面减少不必要的入站暴露,不要直接删除整套规则。
  3. 降低异常客户端重试和短连接并发,优先让应用复用连接、设置合理超时。
  4. 确认内存余量与云平台限制后,再评估调整nf_conntrack_max;修改前记录原值并准备回滚。

如果服务运行在Docker或其他容器网络中,要同时检查宿主机和容器命名空间可见的规则与统计。某些云平台会限制内核参数或网络模块,配置写入成功也不代表实际生效。

验收与防复发

恢复后持续观察连接跟踪使用率、SYN速率、TIME_WAIT趋势、容器错误率和应用重试次数。不要用一次清表或重启作为“已解决”的证据;需要确认在业务峰值下表项仍有余量,并且异常来源已经被隔离或修复。

连接跟踪排查应在自有或获授权的VPS上进行。不要通过放大连接、扫描第三方主机或绕过网络策略来验证容量。

常见问题(FAQ)

conntrack表满会有什么现象?
常见表现包括新建TCP连接超时、部分容器请求失败、NAT流量异常和内核日志出现table full。已建立连接不一定立即中断。
调大nf_conntrack_max就能解决吗?
不一定。若根因是短连接风暴、异常扫描或应用未复用连接,单纯调大只会延迟再次耗尽,还可能增加内存压力。
TIME_WAIT越多就一定是conntrack满了吗?
不是。TIME_WAIT是TCP连接关闭后的状态,conntrack还涉及UDP、NAT和其他状态。需要分别查看连接状态、表使用量和内核计数。
清空conntrack表安全吗?
清空会影响现有NAT和连接状态,可能造成业务中断。应先确认影响范围,在维护窗口或按供应商建议逐步处理。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600