rx_drop 和 tx_drop 持续增长本身不等于网络故障,关键看是否伴随业务异常;无业务影响时需结合 drop 类型、速率、设备角色和内核版本综合判断,而非依赖单一阈值。

rx_drop 和 tx_drop 持续增长本身不等于网络故障,关键看是否伴随业务异常(如延迟升高、连接超时、重传激增)。无业务影响时,需结合 drop 类型、速率、设备角色和内核版本综合判断,而非依赖单一绝对阈值。
rx_drop 增长常见原因与可接受范围
rx_drop 多由接收侧资源不足引起,例如:
- 网卡 Ring Buffer 溢出:中断响应慢或软中断处理不及时(如 CPU 过载、ksoftirqd 占用高),导致新包被丢弃。若每秒 rx_drop
- 驱动/固件缺陷:某些旧版 ixgbe 或 mlx5 驱动在特定流量模式下误报 rx_drop。可查 dmesg | grep -i "drop\|error" 确认是否伴随 “rx_queue X overflow” 或 “hardware error”。
- 非业务流量干扰:如广播风暴、ARP 扫描、容器网络 overlay 的控制面心跳包,可能触发限速丢包(如 tc ingress 规则)。此时 ifconfig 或 ip -s link 显示的 rx_errors 不同步上升,是重要区分点。
tx_drop 增长更需警惕,但仍有低风险场景
tx_drop 表示协议栈已决定发送、但网卡最终未发出,通常反映更上游的问题:
- qdisc 队列满:如使用 pfifo_fast 或 fq_codel 但突发流量超过队列长度(默认通常 1000 包)。若 tx_drop 速率稳定在 1–5 pkt/s,且 qdisc drops(通过 tc -s qdisc 查看)占主导,而 netstat -s | grep "packet receive errors" 无明显变化,大概率是可控背压,不影响 TCP 流量。
- 邻居子系统失败:目标 MAC 不可达(如交换机端口 down、ARP 老化未更新),内核会丢弃待发包并记为 tx_drop。可通过 ip neigh show nud failed 查看失效邻居条目数量;若仅个别 IP 偶发出现,且业务访问不经过该路径,则影响有限。
- 网卡硬件限制:部分虚拟网卡(如 virtio-net)在 vhost 内存映射不足或后端 QEMU 版本低时,tx_drop 缓慢爬升(如每小时几百个),但吞吐和延迟正常,属于已知兼容性边界行为。
判断是否真需干预的实操建议
不要只盯 sar -n DEV 输出,组合验证以下三点:
- 比对 netstat -s 统计:关注 “Tcp:" 下的 “retransmits”、“embryonic”、“failed connection attempts”,若这些指标平稳,说明 TCP 层未感知到丢包影响。
- 检查 ethtool -S 接口底层计数:如 rx_discards、tx_aborted_errors、tx_carrier_errors。若它们为 0,而 sar 显示的 rx_drop/tx_drop 在涨,基本可判定是内核协议栈丢弃(如防火墙 DROP、路由不可达),而非物理链路问题。
- 观察时间粒度与业务节奏匹配:例如每整点 cron 启动备份任务时 rx_drop 突增 200 个,其余时间归零,且备份完成无错误——这是典型资源争抢下的合理丢弃,无需调优。
不推荐设固定阈值告警的原因
同一数值在不同场景意义迥异:
- 一台边缘 IoT 网关,rx_drop > 1/s 可能预示上行拥塞;
- 一台万兆数据库节点,rx_drop 持续 50/s 若仅发生在夜间批量导入期间,且 pg_stat_bgwriter 中 checkpoints 间隔未缩短,大概率无害;
- 而 tx_drop 在负载均衡器 VIP 接口上稳定 3/s,却伴随 nginx $upstream_response_time P99 上升,则需立即排查后端健康检查或连接复用配置。
真正有效的监控应绑定业务黄金指标(如 API 错误率、DB 查询延迟)做关联分析,而非孤立追踪 drop 计数。










