nicstat 是专为网络接口设计的实时流量监控工具,能同时显示多网卡吞吐量、包速率和使用率;需手动编译安装,关键在适配架构并确认识别全部网卡;核心命令 nicstat [interval] 输出 rKb/s+wKb/s、%util 和 Sat,用于排查负载不均与瓶颈。

nicstat 是专为网络接口设计的实时流量监控工具,类似 iostat 之于磁盘,它能同时显示多个网卡的吞吐量、包速率和使用率,特别适合排查多网卡服务器上的负载不均问题。
安装 nicstat 并确认多网卡识别
nicstat 默认不预装,需手动编译安装。关键点是确保系统能正确枚举所有物理与虚拟网卡:
- 下载源码并解压:
wget http://sourceforge.net/projects/nicstat/files/nicstat-1.92.tar.gz→tar -zxvf nicstat-1.92.tar.gz - 进入目录后,先检查 Makefile 是否适配当前架构(如 64 位系统需注释或删除
CFLAGS = $(COPT) -m32行) - 执行
make && sudo make install,默认安装到/usr/local/bin/nicstat - 运行
nicstat -n(-n 表示跳过回环接口),观察输出是否列出全部网卡,如eno1、ens3f0、bond0或veth*等
实时对比各网卡的流量与使用率
核心命令是 nicstat [interval],它默认每秒刷新一次,自动对所有活跃接口采样。重点关注三列:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- rKb/s + wKb/s:入站与出站速率之和,反映实际带宽占用(单位 KB/s)
-
%util:网卡使用率,计算方式为
(rKb/s + wKb/s) / (接口带宽 MB/s × 1024);例如千兆口理论上限为 125 MB/s ≈ 128000 KB/s,若某口显示 %util = 32%,说明已用约 40960 KB/s - Sat:饱和度,值接近 1.0 表示存在排队或丢包风险,配合 %util 判断是否真瓶颈
示例:nicstat 2 每 2 秒刷新,可快速扫视各口是否均衡;若发现 ens3f0 %util 长期 >70% 而 ens3f1 始终
聚焦特定网卡并持续观察趋势
当需深入分析某几个接口时,用 -i 指定逗号分隔的接口名,避免无关信息干扰:
-
nicstat -i eth0,eth1,bond0 5:每 5 秒输出这三张卡的完整指标 - 加
-M以 Mbps 显示(更符合网络工程师习惯),如nicstat -i eno1 -M 1 - 加
-x启用扩展模式,额外显示rAvs(平均读包大小)、wAvs(平均写包大小),有助于判断是小包风暴还是大文件传输 - 配合
watch -n 3 'nicstat -i ens3f0,ens3f1 -s'可实现摘要模式下的滚动监控(-s 仅显示 rKb/s 和 wKb/s)
结合其他工具交叉验证负载分配
nicstat 显示的是内核统计的“接口层”数据,但真实负载还需看上层是否真正打散:
- 用
ip link show确认 bond 接口状态(如 LACP 是否 active、slave 是否 up) - 运行
cat /proc/net/bonding/bond0查看主备模式或哈希策略(xmit_hash_policy)是否启用 - 若使用 SR-IOV 或 DPDK,需额外检查 VF 绑定与队列分布,此时 nicstat 仍有效,但需对照
ethtool -S输出中的 per-queue 计数器 - 怀疑应用层未打散时,可用
nethogs -d 2查看进程级流量归属,确认高流量进程是否被调度到同一 NUMA 节点










