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_errors 是 ethtool -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是否为ixgbe、i40e、ice或较新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 -H 看 ksoftirqd 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_errors、rx_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类自动加载机制与::调用【教程】


