ip -s link show eth0 ethtool -S eth0 | grep -E 'miss|drop|err' ethtool -g eth0 sudo ethtool -G eth0 rx 4096
用户说偶发连不上,ip -s link 里 RX dropped 每分钟都在涨,ifconfig 也有 overruns,可带宽只用了三成,交换机端口没报错,看着不像带宽问题。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,接收侧的 dropped 多半是环形缓冲区不够或者软中断来不及处理,overruns 表示网卡内部缓存溢出,跟带宽打满完全是两回事,别急着扩带宽。
「网卡丢包计数」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
处理上按这个顺序:用 ethtool 统计细分 missed 和 fifo 两类错误 先看丢在哪一层 接收还是发送;看 softirqs 里 NET_RX 是否集中压在单核上 单核打满就会丢包 这是常见现象;调大 ring buffer 并按队列开 RSS 或者 RPS 分流 改完重启网卡才生效 注意别把队列开太多。
改完只确认一件事:压测期间 dropped 计数不再增长 软中断也分散到多个核 用户端重试明显变少。
