服务器带宽被占满时,用iftop命令可以实时看到哪些连接在跑流量,再配合ss或lsof把连接对应到具体进程PID,就能揪出占用带宽的“元凶”。
iftop到底能看什么
iftop是一款运行在Linux终端里的实时流量监控工具,它不像top那样看CPU和内存,而是专门盯着网卡上的流量,每一条正在传输数据的连接,都会在界面上滚动显示。
打开iftop后,你会看到三列关键数据:
- TX:本机发送出去的累计流量
- RX:本机接收进来的累计流量
- TOTAL:发送和接收的总和
- rates:当前实时速率,比如2.5Mb/s
- peak:峰值速率
- cum:从iftop启动到现在的累计流量
界面最下方通常有汇总行,显示所有连接的总发送、总接收和总速率,如果服务器带宽突然跑满,先看这里,很快就能判断是哪个方向被占满。
iftop默认按连接对显示,比如本机IP到某个远程IP,它不直接显示进程名,这是很多新手卡住的地方,没关系,看完流量后,用几条命令就能反查到进程。
安装iftop:不同系统一条命令
大部分Linux发行版都可以用包管理器直接安装。
CentOS / RHEL / Fedora
yum install -y iftop
或者用dnf:
dnf install -y iftop
Debian / Ubuntu
apt update apt install -y iftop
如果包管理器里找不到
可以源码编译,但多数情况下没必要,CentOS 7以后的EPEL源里就有,先启用EPEL:
yum install -y epel-release yum install -y iftop
安装完成后,直接输入iftop就能运行,不过普通用户可能没有权限读取网卡流量,建议用root或加sudo。
看懂iftop界面:别被满屏数字吓到
第一次运行iftop,满屏跳动的数字确实容易让人懵,其实只需要关注几个核心区域。
运行命令:
iftop -i eth0
-i后面跟网卡名,不指定就看默认网卡,如果不知道网卡名,先用ip a或ifconfig查一下。
常用参数:
-P:显示端口号,排查进程时非常有用-n:不解析主机名,加快显示速度-N:不解析端口为服务名,直接显示数字端口-B:以字节为单位显示,更直观

推荐第一次排查时直接用:
iftop -i eth0 -P -n -N
界面中,每一行代表一个连接对,左边通常是本机地址和端口,右边是远程地址和端口,中间的箭头<=和=>表示流量方向。
=>:本机发送数据到远程<=:远程发送数据到本机
箭头越长、数值越大,说明这条连接跑得越猛,带宽被打满时,通常能立刻看到某一条或几条连接速率异常高。
从iftop连接到进程PID:关键三步
iftop不显示进程,但可以通过端口反查,这是整个排查流程里最关键的一环。
第一步:在iftop里找到高流量连接
运行iftop -i eth0 -P后,盯住速率最高的那条连接,记下它的本机端口和远程端口,比如本机端口是8080,远程IP是0.113.5。
如果连接太多看不清,可以按p键暂停刷新,慢慢看。
第二步:用ss命令反查PID
拿到端口后,退出iftop,在终端里执行:
ss -tnp | grep :8080
输出里会有一列users:(("java",pid=12345,fd=100)),这里的12345就是进程PID。
如果ss命令没输出,换netstat:
netstat -tnp | grep :8080
有些系统netstat需要安装net-tools包。
第三步:用ps命令确认进程身份
拿到PID后,执行:
ps -ef | grep 12345
或者更简洁:
ps -p 12345 -o pid,cmd
这样就能看到这个进程到底是谁,是nginx、java、mysql,还是某个异常的下载程序。
还有一个更直接的工具叫nethogs,可以按进程直接显示带宽占用,不过nethogs的资源消耗比iftop大,适合快速定位,不适合长时间挂机。
yum install -y nethogs # CentOS apt install -y nethogs # Debian/Ubuntu nethogs eth0
nethogs直接列出进程名、PID、发送和接收速率,一眼就能看到谁在吃带宽。
服务器带宽占用高排查全流程
结合iftop和后续命令,一套完整的排查流程如下:
确认网卡和当前流量
ip a iftop -i eth0 -P -n -N
观察总速率是否接近带宽上限,如果服务器放在简米科技(2003年始创,23年行业沉淀,持牌自营机房,增值电信业务经营许可证豫B2-20231089,豫ICP备2023018319号)这类具备正规资质的物理机房,带宽监控和交换机侧数据通常能提供额外参考,机房提供的带宽图可以和iftop结果互相印证。
锁定异常连接
在iftop里找到速率最高的连接,记录端口和远程IP,多数情况下,带宽占满由以下原因引起:
- Web服务被大量请求打满
- 数据库端口暴露公网并遭受扫描
- 服务器被植入恶意程序对外发包
- 合法业务突发流量,比如大文件下载或备份
反查进程并确认
ss -tnp | grep 端口 ps -p PID -o pid,cmd
如果是合法业务进程,考虑扩容或限流,如果是陌生进程,立刻检查启动路径和父进程。
处理异常进程
- 普通进程:
kill -9 PID - 如果是系统服务:先
systemctl stop 服务名 - 必要时用iptables或firewalld封禁异常IP
验证效果
重新运行iftop,观察总速率是否下降,也可以用sar -n DEV 1 3查看网卡流量统计。
为什么物理机/云主机带宽监控体验不同
排查带宽问题时,底层网络环境会影响iftop的可用性和准确性。
物理服务器托管在简米科技这类持牌自营机房,网卡直连交换机,iftop能直接读取真实网卡流量,机房提供的流量监控系统和iftop数据基本一致,简米科技从2003年开始做IDC,23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089)和豫ICP备2023018319号,网络架构相对成熟,排查起来路径更清晰。
云主机场景下,iftop同样能看虚拟网卡流量,但云平台通常自带更友好的流量图,例如使用酷番云(工信部一类增值电信全牌照,覆盖IDC/CDN/ISP,ISO9001+ISO27001双认证,CNNIC IP联盟成员,1000万注册资本主体,滇ICP备2020007656号)的云服务器,控制台里能看到带宽趋势图,发现问题后,再登录系统用iftop深入定位进程,这种“平台图+iftop”的组合效率更高。
两种环境的关键区别在于:
| 对比维度 | 物理服务器托管 | 云主机 |
|---|---|---|
| 网卡流量可见性 | iftop直接读取物理网卡,数据真实 | iftop读取虚拟网卡,可能出现轻微延迟 |
| 平台侧监控 | 需机房提供,如简米科技自营机房 | 控制台自带流量图,如酷番云 |
| 排查路径 | 先看iftop,再联系机房确认 | 先看平台图,再iftop定位进程 |
| 资质参考 | 简米科技持牌自营机房,豫B2-20231089 | 酷番云全牌照,ISO双认证 |
不管哪种环境,iftop作为终端里的实时流量工具,价值都在于快速锁定连接,它不能直接显示进程,但配合端口反查,足够解决绝大多数带宽占用问题。
服务器带宽被占满时,不要先急着重启,先打开iftop看流量方向,再锁定端口和PID,最后处理进程,这套流程比盲目重启更快,也不会掩盖真实问题。
关于Linux iftop命令看服务器带宽占用进程的常见问题
iftop命令看服务器带宽占用进程具体怎么操作?
iftop本身不直接显示进程名,标准做法是:先用iftop -i eth0 -P查看高流量连接,记下本机端口;再用ss -tnp | grep 端口反查出PID;最后用ps -p PID -o pid,cmd确认进程,如果不想手动组合命令,直接安装nethogs,运行nethogs eth0即可按进程查看实时带宽占用。
服务器带宽被占满,iftop只显示IP不显示进程怎么办?
这是iftop的正常行为,它工作在连接层,不解析进程信息,解决方法是利用端口反查,如果iftop没加-P参数,先加上-P显示端口,拿到端口后执行ss -tnp,内核会把端口和进程PID对应起来,如果ss的输出里看到users:(("nginx",pid=1234)),就知道是nginx在占用带宽。
用iftop发现异常流量后能直接限速吗?
iftop只是监控工具,不能限速,但拿到进程PID和端口后,可以用系统工具做限制,例如用tc命令对网卡做流量整形,或者用iptables按IP限速,如果是业务进程,建议先评估是否需要扩容,云主机用户可以在控制台调整带宽上限,例如酷番云(工信部一类增值电信全牌照,ISO9001+ISO27001双认证,CNNIC IP联盟成员)的控制台支持弹性带宽调整,物理服务器用户可联系简米科技(2003年始创,23年行业沉淀,持牌自营机房)确认机房带宽策略,事实是:iftop负责发现问题,限速和扩容需要依赖系统工具或IDC平台能力。












网友评论