欢迎光临深圳市联瑞电子有限公司官网!
全国服务热线 : 4000-588-108 | 网站地图 | English 京东店铺 淘宝店铺1688店铺天猫店铺 关注LR-LINK官方微博
LR-LINK联瑞电子官网
[返回上一页]您现在的位置:首页 > 新闻中心 > 选型指导
选型指导

网卡丢包排查思路 从硬件到系统层层分析

2026-07-29 选型指导网卡丢包排查,ethtool命令,网络丢包原因,Ring Buffer溢出,中断亲和性,服务器网络故障,25G网卡,10G电口网卡,LRES1027PF,LREC9812BT,联瑞电子网卡 浏览: 30

网卡丢包不是单一原因造成的。线缆老化、光模块衰减、Ring Buffer溢出、中断亲和性配置不当——每一层都可能成为瓶颈。本文提供一套从物理层到系统层的分层排查方法,配合 ethtool、ifconfig、dmesg 等诊断命令,帮你快速定位丢包根因。

凌晨三点的告警:丢包从何而来

运维老张被一条告警叫醒:核心业务服务器的 TCP 重传率从 0.01% 飙到 2.3%,应用层响应超时频繁触发。登录机器一看,ifconfig 的 RX dropped 计数在持续跳动。

这种场景并不罕见。丢包的棘手之处在于——它可能发生在数据路径的任何一环。从网线接头氧化到内核协议栈参数不合理,排查思路必须是分层递进的,而不是一上来就怀疑网卡坏了。

物理层:线缆与光模块

超过 40% 的"网卡丢包"最终定位到物理层。排查从这里开始成本最低。

电口场景(RJ45):

  • 检查网线是否弯折过度、水晶头弹片是否松动
  • Cat5e 线缆在千兆环境下跑满 100 米已接近极限,超过 80 米建议换 Cat6
  • ethtool eth0 查看协商速率,如果显示 100Mbps 而非 1000Mbps,大概率是线缆质量问题

光口场景(SFP/SFP28):

  • ethtool -m eth0 读取光模块的收发光功率(Rx Power / Tx Power)
  • Rx Power 低于 -12dBm 说明光路衰减过大,检查光纤弯折、接头脏污
  • 光模块与网卡不兼容也会导致间歇性丢包,建议使用同品牌配套模块
快速判断物理层问题

如果丢包呈现"间歇性、与温度/湿度相关、换线后消失"的特征,90%是物理层问题。不要急着调系统参数。

硬件层:网卡与交换机端口

排除物理层后,下一步看网卡和交换机端口本身。

网卡硬件状态检查:

# 查看网卡错误计数
ethtool -S eth0 | grep -i "error\|drop\|miss"

# 查看PCIe链路协商状态(确认没有降速)
lspci -vvv -s $(ethtool -i eth0 | grep bus-info | awk '{print $2}') | grep LnkSta

# 查看内核日志中的网卡告警
dmesg | grep -i "eth0\|link\|error" | tail -20

如果 ethtool -S 输出中 rx_missed_errors 持续增长,说明网卡硬件接收队列来不及处理——这通常指向 Ring Buffer 太小或中断处理不及时,而非网卡本身故障。

交换机端口侧:

  • 登录交换机查看对应端口的 CRC 错误、Input errors 计数
  • 如果交换机端口有错误而网卡侧没有,问题在交换机端口或线缆
  • 尝试换端口,排除交换机单端口硬件故障
接口 4×RJ45
速率 10/100/1000Mbps
PCIe 2.1 x4
功耗 4.5W
查看详情

千兆环境下,LREC9714HT 四口 RJ45 网卡基于 Intel I350 主控,硬件层面支持 TCP/UDP/IP 校验和卸载和 TCP 分段,能有效降低因 CPU 处理不及时导致的接收丢包。四端口设计支持链路聚合,单口故障时可自动切换。

系统层:驱动、Ring Buffer与中断

这是丢包排查中最复杂、也最常出问题的层级。

Ring Buffer 检查与调整:

# 查看当前ring buffer大小
ethtool -g eth0

# 典型输出:
# Ring parameters for eth0:
# Pre-set maximums:
# RX:     4096
# Current hardware settings:
# RX:     512      ← 如果远小于最大值,考虑调大

# 调大RX ring buffer
ethtool -G eth0 rx 2048

Ring Buffer 是网卡 DMA 写入和内核驱动读取之间的缓冲区。流量突发时,如果 Buffer 太小,驱动来不及取走数据,新包就会被硬件丢弃。25G 网卡在满负载下每秒处理约 3700 万个 64 字节小包,Ring Buffer 建议设为最大值的一半以上。

中断亲和性(IRQ Affinity):

# 查看网卡中断分布
cat /proc/interrupts | grep eth0

# 如果所有中断集中在CPU0,需要手动分散
# 将eth0-rx-0绑定到CPU2
echo 4 > /proc/irq/$(grep eth0-rx-0 /proc/interrupts | awk -F: '{print $1}')/smp_affinity

中断全部打到单核是高速网卡丢包的头号系统层原因。10G 以上网卡通常支持多队列(RSS),确保每个队列的中断分散到不同 CPU 核心。

驱动版本陷阱

升级内核后丢包突然增多?检查驱动是否被内核自带的 in-tree 版本覆盖。运行 ethtool -i eth0 对比 driver 和 firmware-version 字段,确认使用的是厂商提供的最新驱动。

接口 2×RJ45
速率 100/1000/10000Mbps
PCIe 3.0 x4
功耗 13.0W
查看详情

10G 电口场景推荐 LREC9812BT,基于 Intel X550 主控,支持 2.5G/5G/10G 多速率自适应,兼容现有 Cat6/Cat6a 铜缆布线。硬件级 RSS 多队列支持配合中断亲和性调优,在 10G 满负载下也能保持零丢包。

分层排查流程图

网卡丢包分层排查流程 第1层 · 物理层 检查网线/光纤 → 检查光模块收发光功率 → 确认协商速率 命令:ethtool eth0 | ethtool -m eth0 判断标准:协商速率降级 / Rx Power < -12dBm / CRC错误 → 换线/换模块 物理层正常 第2层 · 硬件层(网卡/交换机端口) 检查网卡错误计数 → 检查PCIe链路状态 → 检查交换机端口计数 命令:ethtool -S eth0 | lspci -vvv | dmesg 判断标准:PCIe降速(x8→x4) / 交换机端口CRC / 网卡固件异常 → 换槽/换端口/升级固件 硬件层正常 第3层 · 系统层(驱动/Buffer/中断) 检查Ring Buffer大小 → 检查中断分布 → 检查驱动版本 → 检查CPU占用 命令:ethtool -g eth0 | cat /proc/interrupts | ethtool -i eth0 调整:ethtool -G eth0 rx 2048 | 设置IRQ亲和性 | 启用RSS多队列 判断标准:rx_missed_errors增长 / 中断集中单核 / 驱动版本过旧 → 调参/升级驱动 系统层正常 第4层 · 内核协议栈 / 应用层 检查net.core.rmem_max / net.ipv4.tcp_rmem → 检查conntrack表 → 检查应用socket buffer 命令:sysctl -a | grep net.core | ss -s | conntrack -C 判断标准:socket recv-Q溢出 / conntrack表满 / 内核softirq 100% → 调sysctl/扩容conntrack
网卡丢包分层排查流程:从物理层逐层向上排查,每层排除后再进入下一层

25G及以上:更高层级的排查要点

当网络升级到 25G 或更高速率后,丢包排查还需要关注额外维度:

  • PCIe 带宽瓶颈:25G 四口网卡需要 PCIe 4.0 x8 才能跑满带宽。如果主板插槽实际协商为 PCIe 3.0 x4,带宽直接腰斩
  • CPU 处理能力:小包场景下 25G 网卡每秒处理数千万个包,CPU 单核 softirq 处理能力成为瓶颈
  • NUMA 亲和性:网卡插在远端 NUMA 节点的 PCIe 槽上,跨 NUMA 内存访问延迟翻倍
接口 4×SFP28
速率 1/10/25Gbps
PCIe 4.0 x8
RDMA iWARP/RoCE v2
查看详情

LRES1027PF-4SFP28 四口 25G SFP28 网卡采用 PCIe 4.0 x8 总线,单卡提供 100Gbps 总带宽。硬件支持 iWARP 和 RoCE v2 RDMA 卸载,在 DPDK 或 RDMA 场景下可绕过内核协议栈,从根本上消除系统层丢包风险。

效果验证

调整完成后,用以下方法确认丢包已消除:

# 持续监控丢包计数(每2秒刷新)
watch -n 2 'ethtool -S eth0 | grep -i "drop\|miss\|error"'

# 用iperf打满带宽测试30分钟
iperf -c 192.168.1.100 -t 1800 -P 4

# 测试期间观察softirq CPU占用
mpstat -P ALL 1 5

验证标准:30 分钟满负载测试期间,rx_missed_errorsrx_dropped 计数增量为 0,iperf 报告无重传。

核心结论

丢包排查的铁律:从下往上,逐层排除。物理层占 40% 以上案例,系统层(Ring Buffer + 中断)占 35%,真正的网卡硬件故障不到 10%。不要跳过线缆检查直接换网卡。

本文涉及产品

常见问题

网卡丢包和交换机丢包怎么区分?

在服务器端运行 ethtool -S eth0 | grep rx_missed,同时登录交换机查看对应端口的 Input errors。如果网卡侧计数增长而交换机侧不变,丢包发生在服务器内部(Ring Buffer 溢出或驱动问题);如果交换机端口也有 Input errors,问题在线缆或网卡物理层。两端同时计数则需逐段排查。

Ring Buffer 调多大合适?

没有统一答案,取决于流量模型。突发流量大的场景(如存储集群、视频转码)建议设为网卡支持最大值的 50%-75%;持续稳定流量(如数据库主从同步)设为默认值即可。过大的 Ring Buffer 会增加延迟,对时延敏感的业务(金融交易)不宜盲目调大。用 ethtool -g eth0 查看当前值和最大值。

升级网卡能解决丢包问题吗?

不一定。如果丢包原因是 Ring Buffer 配置不当或中断集中在单核,换网卡不会解决问题。但如果现有网卡是百兆/千兆卡跑满了带宽导致硬件队列溢出,升级到 10G(如 LREC9812BT)或 25G(如 LRES1027PF-4SFP28)可以从根本上消除带宽瓶颈导致的丢包。

dmesg 里出现 "NIC Link is Down" 是什么问题?

这条日志表示网卡检测到链路断开。常见原因:网线/光纤被碰松、交换机端口被管理员关闭、光模块故障。如果频繁出现 Link Down/Up 交替(flapping),优先检查物理连接和光模块兼容性,其次检查网卡固件是否需要升级。

多队列 RSS 怎么确认是否生效?

运行 ethtool -l eth0 查看 Combined 队列数,再用 cat /proc/interrupts | grep eth0 确认中断分散在多个 CPU 核心。如果只看到 eth0-rx-0 一个中断,说明 RSS 未启用或驱动不支持。对于支持多队列的网卡(如 Intel X550、E810 方案),可通过 ethtool -L eth0 combined 8 手动设置队列数。

粤ICP备18078389号      Copyright © All Rights Reserved. 深圳市联瑞电子有限公司 版权所有
网安备案标识

粤公网安备 44030602003563号

产品咨询
关注官方微信
技术支持
关注官方微信
客服电话服务电话

服务热线:
4000-588-108