机柜 / U41
内核 · 2026-08-21 · 7 分钟
一张网卡为什么会丢包
交换机计数是干净的,主机却在丢。这种时候先别换线,先问网卡。
ethtool -S eth0 | grep -E 'drop|discard|miss|fifo'
cat /proc/net/softnet_stat
rx_dropped 往上走,多半是 ring 太小,或者软中断来不及收。把 rx ring 从 256 调到 4096,有时就能把那根计数钉住。它不是性能魔法,只是给中断一个喘气的地方。
顺序很重要
- 网卡自己的 drop / miss / fifo。
softnet_stat第二列,被挤掉的 backlog。- 中断是否打在同一个核上。
- 最后才是线、光模块、对端端口。
IRQ 粘在 CPU0 上,是我见过最贵的「默认」。多队列网卡开了 RPS/XPS 却没绑好,看起来像随机丢包,其实是一个核在加班,旁边三个核在看戏。
值过夜班的人喜欢先怀疑驱动。驱动当然会有 bug,但生产上更常见的是:预算按平均值买,流量按尖刺来。尖刺打满 ring 的那 20ms,计数器记下了,你的平均带宽图上什么都没有。
线是最后才换的。先让计数器指认凶手。
U41 · 橙线,内核侧。