服务器带宽被占用,教你使用 iftop 工具分析
什么时候该怀疑带宽被占用
如果你发现网站响应变慢、远程连接卡顿,或者云服务商提示带宽跑满了,大概率是有进程在疯狂“吃带宽”。
这时候光靠 top 看 CPU 和内存是没用的,得用网络流量工具来抓“元凶”。
iftop 是 Linux 下很实用的实时带宽监控工具,它能按连接显示哪对 IP 之间在传数据,以及传输速率。
只要你有一台能连 SSH 的服务器,就能用它定位带宽占用来源。
装好 iftop 只需一条命令
不同系统的安装方式不同,但都只需要一行:
- CentOS / Rocky / AlmaLinux:
yum install -y iftop - Ubuntu / Debian:
apt install -y iftop - 如果没装 EPEL(常见于 CentOS):先
yum install -y epel-release再装 iftop
装完后输入 iftop -h 能看到帮助说明,说明已经成功。
用 iftop 抓住吃带宽的“黑手”
简单跑起来:直接执行 iftop。
界面会分成三块:
- 顶部:当前总带宽(峰值、平均值、近期值)
- 中间:每对连接(左侧源IP,右侧目标IP,中间是端口)以及实时速率
- 底部:统计总结(累计传输量、峰值速率等)
常用操作技巧:
- 按
n切换 IP/域名显示(建议按成 IP,更直观) - 按
s只显示发送方向流量,按d只显示接收方向 - 按
t切换显示模式(2秒/10秒/40秒平均) - 按
p显示端口号 - 按
q退出
实战排查步骤:
- 在高峰卡顿时运行
iftop -i eth0(替换为你的网卡名,可用ip a查看) - 观察列表里速率最高的那个连接,记下目标 IP 和端口(比如 223.5.5.5:443)
- 用
lsof -i :端口或netstat -tlnp | grep 端口查到对应进程 PID - 用
ps aux | grep PID看是什么程序在占用 - 确认是恶意流量还是业务异常,再决定封禁或优化
避坑与常见问题
- iftop 提示“Permission denied”:普通用户只能看自己的连接,建议
sudo iftop或以 root 运行。 - 界面里没有数据:确认网卡名称是否正确,或者试
iftop -P显示端口。 - 带宽看起来正常但网站还是慢:可能是单点连接瓶颈,可以配合
nethogs按进程看流量。 - 别开太久:
iftop默认持续刷新,会占用少量 CPU,建议查出问题就关闭。 - 如果看不到自己机器的 IP:可能被 NAT 或防火墙挡了,检查 iptables 是否允许本机流量。
效果验证与收尾
当你用 iftop 找到占用带宽的 IP 后,可以通过以下方式确认恢复:
- 临时断开该连接(比如关闭对应进程或防火墙 drop 那个 IP)
- 重新运行
iftop,观察总带宽是否下降 - 在云服务商控制台查看带宽监控曲线,确认峰值回落
如果问题反复出现,建议进一步检查系统是否有漏洞、是否需要限制单 IP 连接数。iftop 只是排查工具,真正根治需要结合业务日志和安全策略。
如果你正在处理服务器带宽被占用的问题,建议先按本文步骤跑一次 iftop,定位到 IP 和进程后再做针对性处理。
遇到异常时优先回看上面的“避坑与常见问题”,多数新手踩的坑都在里面了。