信息发布→ 登录 注册 退出

Linux网络丢包怎么排查_链路与网卡分析方法【教程】

发布时间:2025-12-24

点击量:
Linux网络丢包需逐层排查:先查网卡RX-OVR(Ring Buffer溢出)、RX-DRP(内核处理丢包)、RX-ERR(物理链路问题),再检查tc规则、软中断分布、Ring Buffer设置及物理连接与驱动状态。

Linux网络丢包排查不能只盯着应用或配置,得从底层网卡和链路层开始逐层确认。真正有效的排查,是先看硬件是否“装得下”、驱动是否“来得及取”,再查有没有人为规则在中间截流。

看网卡统计:RX-OVR 和 RX-DRP 是关键指标

执行 netstat -i 查看各网卡收发统计:

  • RX-OVR:Ring Buffer 溢出丢包。说明内核处理速度跟不上网卡收包速度,常见于高吞吐、低配机器或中断未均衡场景。
  • RX-DRP:进入 Ring Buffer 后被丢弃,多因内存不足、软中断延迟高、NAPI 轮询不及时等内核处理瓶颈引起。
  • RX-ERR:校验失败(如 CRC 错误)、帧格式异常,指向物理链路问题(线缆、光衰、端口协商失败)

若 RX-OVR 非零,优先用 ethtool -g 查当前 Ring Buffer 大小,并考虑调大(如 ethtool -G rx 4096);若 RX-ERR 高,检查 ethtool 中的 link status、speed/duplex、fec 状态,确认物理连接稳定。

查 tc 规则:QoS 丢包不会出现在网卡统计里

网卡清白 ≠ 没丢包。tc 配置的 netem、fq_codel、policer 等策略会直接丢包,且完全绕过 RX/TX 计数器。

  • 运行 tc qdisc show dev ,重点看是否有 losslimitrateburst 相关参数。
  • 若发现类似 qdisc netem ... loss 5%,说明这是人为注入丢包,用于测试或限流——生产环境应禁用。
  • 清除规则:tc qdisc del dev root(慎用,确保无依赖)。

盯住 Ring Buffer 和中断:软中断瓶颈常被忽略

即使 RX-OVR 为 0,也可能是 Ring Buffer 设置偏小 + CPU 负载高导致消费滞后。进一步验证:

  • cat /proc/interrupts | grep 观察对应网卡中断是否集中在单个 CPU 上;若某 CPU 的 softirq(SI)持续高于 70%,说明 NAPI 处理不过来。
  • 启用 RPS/RFS:echo f > /sys/class/net//queues/rx-0/rps_cpus(按需调整掩码),把软中断分散到多核。
  • 检查 /proc/net/softnet_stat 第 1 列(processed)与第 2 列(dropped)比值;第 2 列持续增长,表明 softnet 队列溢出丢包。

排除物理与驱动层干扰

别跳过最基础但最易出错的一环:

  • ethtool 确认 link detected yes、speed 匹配对端、duplex full;若显示 auto-negotiation failed,手动协商或换线缆。
  • 检查 dmesg | grep -i "eth\|nic\|firmware" 是否有驱动报错、DMA timeout、firmware crash 等日志。
  • 更新网卡固件和驱动版本,尤其 Mellanox、Intel X710 等常见企业级网卡,旧版驱动存在已知 Ring Buffer 竞态丢包问题。
标签:# 链路  # 旧版  # 跳过  # 先看  # 有没有人  # 报错  # 盯着  # 出现在  # 这是  # linux  # 多核  # class  # auto  # echo  # ai  # 端口  # go  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!