带宽被占满是一种很典型的服务器故障:现象是网站访问极慢甚至超时,SSH登录也一顿一顿的。可真正让人头疼的是后续排查——云控制台只能告诉你带宽跑满了,却没法告诉你是什么在跑。这篇就说说服务器上如何一步步定位带宽被谁占用了。

先分清是出方向还是入方向
排查前先明确流量方向:入带宽高,通常是有人在上传、下载你的数据,或遭遇了攻击流量;出带宽高,多数是业务自身在向外发送数据,比如被入侵后对外发包、程序在下载更新、日志或备份在集中传输。云服务商的控制台监控通常能区分出入方向,先看这个能少走弯路。
用iftop实时查看流量来源与去向
iftop可以实时展示每个连接的流量大小,是定位带宽去向最常用的工具。CentOS下安装后直接运行即可:
# CentOS/RHEL
yum install -y iftop
# Debian/Ubuntu
apt install -y iftop
# 按流量排序查看实时连接
yum install -y epel-release 2>/dev/null; iftop -i eth0 -nN -B
运行后界面会按流量从大到小列出各个远端IP,按 n 可以切换是否显示域名,按 b 可以切换流量单位。看到某个陌生IP持续占用大量流量,再结合后面的进程定位继续查。
用nethogs定位到具体进程
iftop只显示IP层面的流量,想知道是哪个程序在跑流量,用nethogs更直观,它按进程名和PID统计:
yum install -y nethogs # 或 apt install -y nethogs
nethogs eth0
如果界面上某个进程(例如php-fpm、nginx之外的陌生进程)流量异常,应立即记录它的PID,再用 ps、lsof 确认可执行文件路径,判断是否为挖矿程序或木马。
常见的带宽占满原因与处置
- 被入侵植入挖矿或代理程序:进程名常伪装成系统进程,可用 ps aux –sort=-%cpu 与 ss -tnp 交叉核对;
- 网站遭遇CC或DDoS攻击:结合访问日志与连接数统计确认,必要时在防火墙或云盾上封禁来源IP;
- 日志、备份程序在高峰期集中传输:把备份时间调整到低峰期,或限制rsync/scp的带宽;
- 业务代码异常循环下载或上传:检查cron任务、队列进程是否有重复执行的情况;
- 大流量业务本身跑满:属于容量问题,考虑升级带宽或改用CDN、对象存储分流。
处置时遵循先止血再根治的思路:确认是恶意流量先封禁来源、隔离进程,确认是业务流量再评估扩容或优化,避免误杀正常业务。
相关问答FAQs
- 问:没有iftop、nethogs时怎么应急查看?答:可临时用 cat /proc/net/dev 观察网卡累计流量增速,或用 ss -s 看连接概况,但定位到进程仍建议安装上述工具。
- 问:带宽占用高但CPU很低是怎么回事?答:纯流量型占用(如下载、攻击报文)往往不消耗多少CPU,这种情况更要关注连接数与流量来源。
- 问:云服务器被DDoS怎么办?答:先在云控制台开启DDoS防护或高防,再通过安全组/防火墙规则过滤攻击源,业务侧可临时开启CDN隐藏源站IP。
最后给一个实用建议:在服务器上提前把iftop、nethogs这类工具装好,配置带宽使用率的告警,再写一个例行巡检脚本,等故障发生时就能直接进入定位环节,而不是先花半小时装工具。排查带宽问题本身不难,难的是在故障发生时手边有趁手的工具。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!