linux

Linux dropped包的解决方法

小樊
36
2025-12-27 15:02:44
栏目: 智能运维

Linux dropped 包的排查与解决

一、快速定位思路

二、常见根因与对应处理

现象/计数 可能原因 快速确认 处理建议
RX/TX drop 增长(ifconfig/ethtool -S 可见) 网卡Ring Buffer溢出 ethtool -S 中出现rx_fifo_errors;/proc/net/dev 的 fifo 列增长 增大环形缓冲:ethtool -G rx 4096 tx 4096;降低突发流量;优化中断/CPU亲和
RX overruns 增长 驱动队列/CPU处理不及时 ethtool -S 中 rx_overruns 增长 提升软中断处理能力(RPS/XPS)、中断绑核;升级驱动/固件
netdev_max_backlog 溢出 内核网络 backlog 队列满 /proc/net/softnet_stat 某核第2列持续增大 调大 net.core.netdev_max_backlog;优化软中断分布
nf_conntrack: table full 连接跟踪表满 dmesg grep nf_conntrack;/proc/sys/net/netfilter/nf_conntrack_*
crc_errors 增长 物理介质/线缆/光模块问题 ethtool -S grep crc;接口错包计数
length_errors 增长 MTU/巨帧不匹配 ethtool -S grep length_errors
ARP 目的MAC错误 静态ARP/ARP未及时更新 源端抓包或 ip neigh;目的端混杂抓包核对MAC 刷新ARP(ip neigh flush all);修正静态ARP
安全组/iptables DROP 策略拦截 iptables -L -n -v;云平台安全组规则 放通业务端口与协议;清理误拦截规则
协商速率/双工异常 自协商失败/对端限制 ethtool ;ethtool -r 重新自协商;必要时强制 speed/duplex(如 speed 1000 duplex full autoneg off)
驱动/固件异常 版本过旧或缺陷 ethtool -i ;dmesg 升级驱动/固件;回退稳定版本

三、关键命令速查

四、处理顺序建议

  1. 基线采集:记录问题时间点的ip -sethtool -S/proc/net/dev/proc/net/softnet_stat、dmesg 与 top 快照。
  2. 连通性验证:对关键目标执行ping/traceroute,确认丢包发生在本地、链路还是远端。
  3. 物理与协商:核查crc_errors协商速率/双工流控,必要时更换介质/端口并重新自协商。
  4. 队列与驱动:若fifo/overrunsbacklog溢出,先增大Ring Buffernetdev_max_backlog,再做中断/RPS/XPS优化与驱动升级。
  5. 策略与连接:排查iptables/安全组nf_conntrack满导致的丢包,必要时调大表或优化超时。
  6. 应用与系统:检查业务进程状态与资源瓶颈(CPU/内存/带宽/IO),结合tcpdump定位是内核丢弃还是应用未消费。
  7. 回归验证:复测 ping/traceroute、ss -s、接口统计,确认“dropped”计数不再增长且业务恢复稳定。

五、注意事项

0
看了该问题的人还看了