Linux中查看网卡丢包应关注底层统计字段而非IP配置;可通过/proc/net/dev查Rx-DRP(协议栈丢包)和Rx-OVR(Ring Buffer溢出),ip -s link show看dropped/missed,ethtool -S定位硬件错误,tc命令排查人为限流。

看 /proc/net/dev —— 最快最稳的入口
执行:
cat /proc/net/dev | grep eth0
找到目标网卡行(如 eth0 或 ens33),重点看 Rx-DRP 和 Rx-OVR 两列:
- Rx-DRP:包已进 Ring Buffer,但被内核协议栈丢弃(如 socket 接收队列满、无监听端口、内存不足)
- Rx-OVR:Ring Buffer 溢出,新包直接覆盖旧包——属驱动/硬件协同瓶颈,比 DRP 更严重
持续运行 watch -n1 'cat /proc/net/dev | grep eth0',观察这两列是否随流量上升而增长。
用 ip -s link show —— 替代 ifconfig 的标准命令
执行:
ip -s link show eth0
输出分 RX(接收)和 TX(发送)两段,重点关注:
- RX: ... dropped → 等价于 /proc/net/dev 的 Rx-DRP(内核协议栈丢)
- RX: ... missed → 对应 Ring Buffer 溢出,与 Rx-OVR 含义接近(部分驱动中二者一致)
-
TX: ... dropped → 多因发送队列满(
tx_queue_len过小)或驱动拒绝发包
注意:单次数值意义不大,建议两次执行取差值,观察单位时间丢包趋势。
查 ethtool -S —— 定位硬件/驱动层根源
执行:
ethtool -S eth0 | grep -E "(rx_|tx_).*(drop|fifo|miss|crc|err)"
关键字段包括:
- rx_fifo_errors:物理 FIFO 溢出,常与高吞吐小包相关
- rx_missed_errors:vCPU 调度不及时(虚拟化环境典型信号)
- rx_crc_errors:CRC 校验失败 → 线缆松动、光模块衰减、双工不匹配
- rx_frame_errors:帧格式错误,也指向物理链路异常
若这些值非零且持续上涨,说明问题在物理层或驱动,而非上层应用或 IP 配置。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
别漏掉 tc 规则 —— “幽灵丢包”常见元凶
很多丢包根本不是故障,而是人为限流:
- 检查是否启用丢包策略:
tc qdisc show dev eth0 - 看真实丢包数:
tc -s qdisc show dev eth0 → 关注 dropped 列是否上涨 - 容器环境务必检查虚拟接口(如
cali+、lxc+)
例如:tc qdisc add dev eth0 root netem loss 5% 会让 5% 出向包静默消失,和 IP 地址完全无关。

















