带宽突然被占满导致业务中断,最直接的处理顺序是:先限速、封IP,把业务从拥堵里捞出来,再慢慢查谁在跑流量。 不少运维第一反应是抓包看异常,但业务已经断了,客户等不起,先恢复服务,再诊断根因,才是能落地的做法。
带宽突然被占满怎么处理?先恢复业务再查原因
带宽被占满时,业务表现很典型:网页打开卡顿、接口超时、数据库连接池被打满,甚至监控系统直接告警,这时候别急着拔网线,按下面步骤走,能把业务中断时间压到最短。
登录网络设备或云控制台,确认流量方向
先看一眼实时带宽监控,判断是入向流量大(别人打进来的)还是出向流量大(服务器往外发数据),入向流量暴增多半是攻击或爬虫,出向暴增则要怀疑内网中毒或业务逻辑问题。
- 物理设备:登录防火墙或核心交换机,用
show interface或display interface查看端口速率。 - 云服务器:在云控制台“流量监控”页面查看带宽曲线,通常能定位到具体网卡或IP。
临时限速或封IP,把业务捞回来
确认有异常流量后,不要马上全部阻断,先做定向限制。
| 场景 | 操作 | 效果 |
|---|---|---|
| 单个IP疯狂发包 | 防火墙添加deny规则 | 立竿见影 |
| 大量IP分散攻击 | 在交换机或防火墙做限速策略 | 保护带宽不被吃光 |
| 出向流量异常 | 断开可疑进程的连接或封禁外联IP | 防止数据外泄 |
常用命令示例(Linux防火墙):
iptables -A INPUT -s 103.23.56.1 -j DROP tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc命令用于限制网卡总带宽或单IP带宽,业务恢复后可以再动态调整,如果你用的是云厂商的防火墙,直接在控制台配安全组规则即可,速度更快。
暂停非核心服务,给核心业务腾路
如果流量压力还很大,临时停掉日志归档、视频转码、定时备份这类非核心任务,这些服务平时不起眼,关键时刻占着带宽不撒手,等业务恢复平稳后再启动,并把任务错峰执行。
这里有个误区:重启业务进程不一定有用,攻击流量还挂在链路上,重启十次照样被塞满,只有先阻断或限速,重启才有意义。

业务中断带宽排查:怎么区分攻击和内部异常
业务恢复后,下一步是搞清楚到底是谁吃掉了带宽,常见原因分两类:外部攻击和内部异常,处理方式完全不同,搞错了方向会浪费时间。
先看流量特征,再猜原因
| 特征 | 可能性 | 典型表现 |
|---|---|---|
| 源IP分散、端口随机、流量突发 | DDoS攻击 | 带宽瞬间满,连接数几十万 |
| 单一IP高频请求同一URL | 恶意爬虫 | CPU不高,带宽被占 |
| 服务器主动外连大量IP | 木马或挖矿 | 出向流量大,进程名可疑 |
| 定时出现,每次持续几十分钟 | 内部任务冲突 | 比如备份撞上业务高峰 |
| 重启后好转几分钟又占满 | 持续攻击或病毒回传 | 反复发作 |
业内专家指出,多数情况下,带宽异常八成是外部流量惹的祸,但也不能忽略内部脚本的“自杀式”占带宽比如某个接口被前端反复调用,一次拉取几十MB图片,叠加起来就把带宽填满了。
看连接数和进程,缩小排查范围
- 用
ss -ant统计连接状态,重点看ESTABLISHED和SYN_RECV的数量。 - 用
netstat -antp找到与端口关联的进程PID,再通过ps aux | grep PID看到底是什么程序。
如果发现大量来自同一地区IP或同一网段的连接,大概率是爬虫或攻击源,如果连接数正常,但带宽占用高,问题多半在应用层的数据传输上,比如文件下载接口没有做频率限制。
带宽占满 服务器性能下降?用这些命令快速定位
带宽满的时候,服务器性能往往也会跟着崩,因为它俩互相影响,下面这套命令组合拳,专门用来在混乱中找到“流量元凶”。
按连接看流量:iftop
iftop 能实时显示每个IP地址的带宽流量,是排查“谁在狂吃流量”的首选工具,安装后直接运行:
iftop -i eth0 -n
界面里会列出所有活跃连接,按流量排序,一眼就能看到排在前面的是不是业务IP,如果是陌生IP,直接查它的归属地和历史访问记录。

按进程看流量:nethogs
如果你怀疑是本机进程在疯狂上传下载,用 nethogs 按进程切分流量:
nethogs eth0
它会列出PID、程序名和实时速率,经常能看到 python、java 或 php-fpm 的进程占了大头,这时候顺着PID去查它的工作目录和启动参数,大概率能找到异常原因。
抓包确认攻击类型:tcpdump
如果上面两步还定位不到,那就抓包看细节:
tcpdump -i eth0 -nn port 80 -c 1000 -w /tmp/capture.pcap
抓包文件导出后用Wireshark打开,看请求的URL、User-Agent和报文特征,攻击流量一般有明显的规律,比如同一个TCP标志位不停重复、包大小固定等。
检查系统日志和业务日志,找蛛丝马迹
- 系统日志:
journalctl -u network.service或/var/log/messages,看有没有网络配置变更记录。 - 业务日志:Nginx访问日志、Tomcat的localhost.log,重点查返回码499、502以及超大响应体的请求。
行业共识认为,日志是最可靠的排查依据,因为它记录了“事故发生时到底发生了什么”,即使当时没抓到现场,日志也能事后还原。
带宽突然被占满后,如何防止业务再次中断
排查完原因,接下来得把“防灾机制”建起来,否则下一次大流量一来,你可能又得熬夜救火。
设置带宽告警和监控
监控工具建议先用现成的云监控,如果用的是物理机,可以部署Prometheus + Grafana,监控带宽、连接数、流量TOP IP三个指标,阈值设多少合适?多数情况下,带宽使用率持续5分钟超过70%就触发告警,连接数如果比平时高10倍,也要告警。
配置限速和黑白名单策略
- 在防火墙或负载均衡器上为单IP设置速率限制,正常情况下单IP超过20Mbps就要留意。
- 把不用的端口全部关闭,尤其是公网入向的UDP端口,UDP攻击更容易放大流量。
- 维护一份IP黑名单,把历史攻击IP、海外扫描IP加进去,拦截效率更高。
接入CDN或高防IP,把大流量挡在源头
如果你的业务面向公众用户,接入CDN能分担大量静态资源请求,源站带宽压力会小很多,如果攻击流量已经按Gbps计算,直接上高防IP,把恶意流量导到黑洞或清洗节点,业务就能稳定运行,CDN和高防的价格按流量计费,相较于业务中断造成的损失,这笔钱花得值。

评估“带宽升级价格”和成本,决定扩容还是优化
如果业务确实在增长,带宽不够用是常态,那就直接升级带宽,企业带宽升级价格因地域和运营商差异较大,比如一线城市100Mbps独享带宽大致每月数百元,二线城市或中小型ISP会低一些,专线则要贵上几倍,升级之前先做一次流量自查,看看是不是有大量无效流量在里面“混水摸鱼”,把流量洗干净再扩容,能省下不少预算。
定期做压力测试,提前发现问题
挑业务低峰期,模拟高流量场景跑一轮压测,这样做不是要找系统的极限,而是检验带宽快满时业务是否还能撑得住,很多系统的隐藏风险,比如死循环重试、心跳风暴,只有在压力下才会暴露。
关于带宽占满的常见问题解答
Q1:带宽被占满后重启服务器有用吗?
A1:重启只能暂时清掉内存里的进程,如果攻击流量没有在设备层面阻断,重启后几分钟带宽又会被打满,重启前务必保存当前连接状态和抓包文件,否则会丢失关键证据,正确顺序是:先封禁异常IP或限速,确认带宽降下来后再重启业务进程。
Q2:怎么判断是带宽占满还是服务器性能瓶颈?
A2:看两个指标:带宽使用率和CPU负载,用 sar -n DEV 看网卡吞吐,用 top 看CPU,如果网卡吞吐接近网卡上限而CPU空闲,就是带宽瓶颈;如果CPU接近100%,带宽使用率不高,说明是性能瓶颈,也可以用 ping -s 1400 发大包测延迟,带宽满时延迟会明显升高,性能瓶颈则延迟基本稳定。
Q3:小公司带宽不足怎么办?是升级带宽还是上CDN?
A3:先看业务类型,如果是静态资源、图片或视频分发,上CDN能减轻源站带宽压力,成本远低于直接升级带宽;如果是API、数据库读写或实时音视频,CDN帮不上忙,只能升级带宽,建议先用监控工具统计带宽消耗的构成,再做决定,若攻击频繁,直接考虑高防IP,不要只堆带宽。
带宽突然被占满不可怕,可怕的是没有应急顺序和排查思路,先恢复、再定位、后防护”这条主线,把监控和限速策略常态化,业务中断的概率会大幅下降,下次遇到流量异常,先动手封堵,而不是愣在原地看屏幕。