服务器带宽被跑满怎么办?三种原因与处理顺序

2026-10-31更新于 2026-11-02故障处理约 9 分钟

带宽跑满是游戏服务器最常见的故障之一。这篇讲清楚怎么确认、有哪几种原因、以及每一层怎么处理。

怎么确认是带宽跑满

三个信号同时出现,基本可以确定:

  1. 云厂商控制台的出带宽曲线顶到上限,呈一条水平直线
  2. 服务器本地 ping 网关正常,但从外部 ping 服务器丢包严重
  3. SSH 登录极慢或超时,但 CPU 和内存都不高

验证命令:

# 实时看网卡流量(需要 iftop,或用 sar)
sar -n DEV 1 10

# 看当前累计流量
cat /proc/net/dev

# 按进程统计流量(nethogs)
nethogs
关键区分:带宽跑满时 CPU 往往不高,因为包根本没进到应用层就被丢了。如果 CPU 也满了,那是 CC 攻击或程序问题,不是单纯的带宽问题。

三种原因,处理方式完全不同

原因一:DDoS 流量攻击

特征:带宽瞬间打满,从正常值直接冲到上限,通常几分钟内发生。攻击流量可能是正常流量的几十上百倍。

为什么自己处理不了:你的带宽上限是 100M,攻击流量是 10G,包在运营商那里就被丢了——你连抓包都抓不到。

处置:

  1. 立刻联系云厂商,申请流量清洗或黑洞(黑洞是下策,等于业务中断)
  2. 如果攻击持续,考虑接入带清洗能力的防护方案
  3. 源站 IP 暴露的话,光换 IP 只能撑几天

原因二:业务增长超出预期

特征:带宽随在线人数平稳上升,在某个时间点(比如晚高峰)顶到上限,凌晨恢复正常。

怎么算需要多少带宽:

所需带宽(Mbps) ≈ 单玩家平均带宽(Kbps) × 在线人数 ÷ 1000 × 峰值系数

举例:
  单玩家 30 Kbps(回合制/棋牌)
  在线 2000 人
  峰值系数 1.5
  → 30 × 2000 ÷ 1000 × 1.5 = 90 Mbps

不同类型游戏的单玩家带宽差别很大:

游戏类型单玩家带宽参考说明
回合制、棋牌10–30 Kbps请求响应式,数据量小
MMORPG30–80 Kbps周围玩家和怪物状态同步
MOBA、FPS80–200 Kbps高频位置同步,20–60 帧/秒
带语音的房间类200–500 Kbps语音流占大头

处置:升级带宽,或者把静态资源(客户端下载包、更新包、图片)迁到对象存储 + CDN,这部分流量往往占了总流量的一半以上。

原因三:程序或配置问题

特征:没有攻击、人也不多,但带宽就是异常高。常见几种:

  • 死循环重连:客户端断线后疯狂重连,每个客户端每秒几十次请求
  • 日志或监控外发:把日志实时推到外部服务,量大时很惊人
  • 资源盗链:更新包被别的站直接引用
  • 备份任务:每天定时全量备份传到异地,瞬间打满上行
  • UDP 放大:服务器开了某些 UDP 服务(如 memcached、DNS 递归),被利用做反射放大

排查方法:

# 按进程看流量(最直接)
nethogs

# 看哪些端口在大量外发
ss -s
ss -tunp | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head

# 检查是否开了不该开的 UDP 服务
netstat -ulnp
特别注意 UDP:很多服务器默认开了 DNS 递归或 memcached,一旦被利用做反射放大,你的服务器会变成攻击别人的工具,同时自己的带宽被打满。这类服务如果不需要,一定要关掉或限制来源。

应急处理顺序

带宽已经跑满、业务中断时,按这个顺序做:

  1. 先确认是不是攻击(看曲线形状,见 游戏卡顿掉线是被攻击了吗)
  2. 是攻击:联系云厂商清洗,同时准备临时扩容扛过峰值
  3. 不是攻击:nethogs 找出发流量的进程,先 kill 掉止血
  4. 止血后:查清原因,是配置问题就改配置,是业务增长就扩容或分流

长期方案:把带宽压力拆开

不要把全部流量都压在源站带宽上。合理的架构是分层:

流量类型走哪里效果
客户端下载包、更新包对象存储 + CDN通常能省掉一半以上带宽
游戏内图片、配置CDN省带宽,还更快
登录、支付等短连接CDN 或高防 IP挡掉大部分 CC
游戏长连接(核心)游戏盾节点中转隐藏源站 IP,攻击打不到源站

其中最后一项最关键——只要源站 IP 不暴露,流量型攻击就没有目标。原理见 游戏盾是什么。

想先验证线路质量?不限时长的免费调试实例,规格与个人版一致,不自动转正、不产生费用。
领取调试实例