ethtool -S eth0 rx_missed_errors 持续增加的 ring buffer / 驱动 / 硬件原因

发布时间 - 2026-01-30 00:00:00    点击率:
rx_missed_errors 是网卡因处理不过来而丢弃已接收帧的计数器,反映ring buffer溢出、驱动瓶颈或硬件故障;持续增长意味着真实丢包,TCP重传掩盖问题,UDP直接丢失。

rx_missed_errors 是什么,为什么它重要

rx_missed_errorsethtool -S eth0 输出中一个关键接收错误计数器,表示网卡已收到数据帧,但因驱动或硬件来不及处理而丢弃的包数量。它不反映链路层 CRC 错误或物理断连,而是典型的「处理不过来」信号——哪怕 rx_packets 看似正常增长,这个值持续上升就说明有真实丢包,且应用层可能完全感知不到(TCP 会重传,UDP 就直接没了)。

ring buffer 设置过小是最常见原因

Linux 内核通过环形缓冲区(ring buffer)暂存网卡 DMA 过来的数据帧,大小由 rx 队列长度控制。如果应用读包慢(如高吞吐下 CPU 被抢占、软中断延迟高),或 ring buffer 本身太小,新帧就会覆盖未消费的旧帧,触发 rx_missed_errors 增加。

  • ethtool -g eth0 查看当前 rx ring 大小;多数千兆卡默认是 256,万兆卡可能为 4096,但实际往往不够
  • 增大前先确认驱动是否支持:运行 ethtool -i eth0,检查 driver 是否为 ixgbei40eice 或较新 atlantic;老驱动(如部分 e1000e)对大 ring 支持不稳定
  • 临时调大:例如 ethtool -G eth0 rx 4096;注意总内存占用 ≈ rx ring size × skb buffer size(通常 2KB 左右),别设到吃光内存
  • 持久化需写入 udev 规则或 systemd service,不能只靠 /etc/network/interfaces

驱动 bug 或中断处理瓶颈同样会导致该计数器上涨

即使 ring buffer 足够大,若驱动未能及时从 ring 中取走数据(比如 NAPI poll 轮询时间太短、软中断被压制、或驱动在某个路径上死锁),帧仍会被丢弃。典型表现是:rx_missed_errors 上涨的同时,rx_dropped 也同步增加,且 softirq 时间占比高(top -Hksoftirqd CPU 占用 >30%)。

  • 检查内核日志是否有驱动报错:dmesg | grep -i "eth0\|napi\|ixgbe\|i40e"
  • 确认是否启用了 RPS/RFS:cat /sys/class/net/eth0/queues/rx-0/rps_cpus;多队列网卡建议开启 RPS 分散软中断到多核,避免单核瓶颈
  • 某些驱动版本存在已知问题(如 ixgbe 5.3.7 之前在 LRO 启用时漏处理部分帧)

    ,升级到厂商推荐驱动或主线较新内核(≥5.10)常能缓解
  • 禁用 LRO/GRO 测试是否改善:ethtool -K eth0 lro off gro off;虽然降低吞吐效率,但可排除聚合逻辑干扰

硬件层面可能性虽低但必须排除

真实硬件故障或固件缺陷也会导致该计数器异常增长,尤其在更换网卡、升级 BIOS/UEFI 或服务器电源策略变更后出现。此时往往伴随其他指标异常,比如 rx_crc_errorsrx_length_errors 同步上升,或 ethtool eth0 显示 link 反复抖动。

  • 运行厂商诊断工具:Intel 网卡用 intel-nvm-update 检查固件版本,执行 ixgbe_diag;Mellanox 用 mlxburn + mstflint
  • 换插槽测试:有些主板 PCIe 插槽供电或带宽不足(尤其是 x4 通道插在 x8 插槽),导致 DMA 超时
  • 关闭节能特性:echo 'performance' > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor,并禁用 ASPM:setpci -s 00:1c.0 0xa0.b=00(需根据 lspci -tv 找对上游桥地址)
  • 对比同型号网卡在另一台机器上的行为;若仅此卡异常,基本可定位硬件或固件

真正难判断的是 ring buffer、驱动和硬件问题交织的情况——比如 ring 设大了暂时压住计数器,但某次流量突发又暴涨,这时得结合 /proc/interrupts 中 eth0 对应中断号的分布、perf record -e irq:softirq_entry 抓软中断热点,再决定优先调哪一层。


# linux  # go  # 主板  # 工具  # ios  # bios  # 热点  # 内存占用  # lsp  # 为什么  # echo  # class  # udp  # bug  # 插槽  # 固件  # 死锁  # 多核  # 比高  # 的是  # 就会  # 也会  # 尤其是  # 大了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  制作企业网站建设方案,怎样建设一个公司网站?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何用美橙互联一键搭建多站合一网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  七夕网站制作视频,七夕大促活动怎么报名?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Laravel如何为API生成Swagger或OpenAPI文档  如何在建站之星网店版论坛获取技术支持?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  免费视频制作网站,更新又快又好的免费电影网站?  EditPlus中的正则表达式 实战(1)  如何为不同团队 ID 动态生成多个非值班状态按钮  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何用5美元大硬盘VPS安全高效搭建个人网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  ,交易猫的商品怎么发布到网站上去?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel如何实现用户密码重置功能?(完整流程代码)  详解Oracle修改字段类型方法总结  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何在VPS电脑上快速搭建网站?  青岛网站建设如何选择本地服务器?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  潮流网站制作头像软件下载,适合母子的网名有哪些?  深圳网站制作培训,深圳哪些招聘网站比较好?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何用西部建站助手快速创建专业网站?  简历没回改:利用AI润色让你的文字更专业  php结合redis实现高并发下的抢购、秒杀功能的实例  在线教育网站制作平台,山西立德教育官网?  node.js报错:Cannot find module 'ejs'的解决办法  Android利用动画实现背景逐渐变暗  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Bootstrap整体框架之CSS12栅格系统  Python高阶函数应用_函数作为参数说明【指导】  Laravel如何使用Eloquent进行子查询  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】