Linux网卡流量监控需结合iftop与ethtool:iftop实时定位高流量连接(如sudo iftop -i eth0 -n -B),关注2s/10s/40s速率判断突发或持续占用;ethtool检查物理层状态(Link、Speed、Duplex)及驱动错误(rx/tx_errors、dropped),二者配合可区分应用层占用与链路异常。

Linux网卡流量监控不能只看“总流量”,得结合连接级占用、接口物理状态和驱动层统计,才能准确定位瓶颈。iftop 看谁在用、ethtool 看链路是否健康,两者配合才能避免误判。
用 iftop 快速定位高流量连接
iftop 本质是抓包分析工具,它显示的是当前活跃连接的实时带宽,不是网卡总吞吐量。适合排查“谁在打满带宽”这类问题。
- 基础命令:sudo iftop -i eth0 -n -B(指定网卡、禁DNS、以字节为单位)
- 运行中按 P 显示端口,按 S/D 分别聚焦源/目标地址,按 l 输入IP可过滤特定主机
- 重点关注右列三个数值:2s / 10s / 40s 平均速率。若某连接 2s 值很高但 40s 很低,说明是突发流量;若三者持续接近,才是稳定占用
- 注意 TX/RX 总计与各连接之和可能不等——因为 iftop 不统计本地回环、广播或多播等部分流量
用 ethtool 检查物理层与驱动状态
iftop 再准也看不到网线松没松、协商速率对不对、硬件有没有丢包。这些必须靠 ethtool 查底层状态。
- 执行 ethtool eth0,重点确认三项:Link detected: yes(物理连通)、Speed: 1000Mb/s(协商速率)、Duplex: Full(双工模式)
- 执行 ethtool -S eth0 | grep -E "(rx|tx).*_errors|dropped",查看 RX/TX errors、dropped 是否持续增长。大量 dropped 通常指向网卡过载、驱动异常或交换机端口问题
- 若发现 Link detected: no,先检查网线、交换机端口、光模块;若 Speed 显示 10Mb/s 或半双工,大概率是自协商失败,可用 ethtool -s eth0 autoneg off speed 1000 duplex full 手动强制
组合判断:区分是应用层占满,还是链路本身异常
常见误判场景:iftop 显示总流量只有 20MB/s,但业务明显卡顿。这时 ethtool 可能揭示真相。
- 现象:iftop 流量不高,但 ping 延迟飙升、丢包率上升 → 检查 ethtool -S eth0 中 rx_missed_errors 或 tx_aborted_errors 是否增长
- 现象:iftop 显示某 IP 占用极高,但 ethtool 的 Speed 和 Link 都正常 → 问题在上层(如恶意扫描、未限速服务),不是网卡瓶颈
- 现象:ethtool 显示大量 rx_fifo_errors → 接收缓冲区溢出,可能是中断处理不及时或 CPU 负载过高,需结合 top 和 vmstat 进一步分析


















