Linux 网络 dropped 的含义与定位
一、dropped 代表什么
ip -s link、ifconfig、/proc/net/dev、ethtool -S 查看。若 dropped 持续增长,通常意味着网络或系统处理能力与负载不匹配,需要排查。二、快速定位步骤
ip -s -s link show dev eth0(关注 RX/TX packets、dropped、errors 的增长)。sar -n DEV 1 10、sar -n EDEV 1 10(看 rx/tx PPS、kB/s 与错误/丢包趋势)。ethtool -S eth0 | grep -i rx_fifo 或 cat /proc/net/dev 中的 fifo 项是否增长。ethtool -g eth0;必要时调大:ethtool -G eth0 rx 4096 tx 4096。ethtool eth0 看 Speed/Duplex/Autoneg;异常时重协商或强制一致:ethtool -r eth0 或 ethtool -s eth0 speed 1000 duplex full autoneg off。ethtool -S eth0 | grep control 观察 rx_flow_control_xon/off;必要时关闭/开启以配合上游设备:ethtool -A eth0 rx off tx off。cat /proc/net/softnet_stat(每行第二列为因 netdev_max_backlog 溢出丢弃);可调大:sysctl -w net.core.netdev_max_backlog=2000~5000。dmesg | grep nf_conntrack;查看与调整:cat /proc/sys/net/netfilter/nf_conntrack_max、nf_conntrack_count;必要时增大表与桶并缩短已建立连接超时:sysctl -w net.netfilter.nf_conntrack_max=1048576、net.netfilter.nf_conntrack_buckets=262144、net.netfilter.nf_conntrack_tcp_timeout_established=3600。tcpdump -i eth0 port 22 or host x.x.x.x -nn -vv;若 SYN 无响应而链路 ping 正常,常见于 nf_conntrack 满、backlog 溢出、或防火墙 DROP 规则。三、常见原因与对应处理
| 现象/指标 | 可能原因 | 快速确认 | 处理建议 |
|---|---|---|---|
RX dropped 增长且 rx_fifo 同步增长 |
网卡 Ring Buffer 不足、CPU/软中断处理不及时 | `ethtool -S eth0 | grep rx_fifo、ethtool -g eth0` |
dropped 增长且 softnet_stat 第二列增长 |
内核 netdev_max_backlog 队列溢出 | cat /proc/net/softnet_stat |
调大队列:sysctl -w net.core.netdev_max_backlog=2000~5000 |
dmesg 出现 “nf_conntrack: table full” |
连接跟踪表 溢出(NAT/防火墙) | `dmesg | grep nf_conntrack、/proc/sys/net/netfilter/nf_conntrack_*` |
ifconfig 的 errors 增长(如 carrier、crc_errors) |
物理层问题:双工/速率不匹配、线缆/光模块故障 | ethtool eth0、`ethtool -S eth0 |
grep crc` |
| 仅 UDP 业务异常或时延抖动 | UDP buffer 不足、应用消费慢、防火墙策略 | ss -u ln、/proc/net/udp、抓包 |
增大 socket 缓冲与应用并发;核查防火墙/安全组策略 |
| SYN 不响应但 ping 正常 | backlog/连接跟踪/防火墙 丢包 | tcpdump 抓 SYN、`dmesg |
grep nf_conntrack` |
四、实用命令清单
ip -s -s link show dev eth0cat /proc/net/devsar -n DEV 1 10、sar -n EDEV 1 10ethtool eth0、ethtool -S eth0 | grep -iE "rx_fifo|crc|length|control"ethtool -g eth0、ethtool -G eth0 rx 4096 tx 4096ethtool -r eth0、ethtool -A eth0 rx off tx offcat /proc/net/softnet_statsysctl -w net.core.netdev_max_backlog=2000dmesg | grep nf_conntrackcat /proc/sys/net/netfilter/nf_conntrack_max、nf_conntrack_countsysctl -w net.netfilter.nf_conntrack_max=1048576、net.netfilter.nf_conntrack_buckets=262144、net.netfilter.nf_conntrack_tcp_timeout_established=3600tcpdump -i eth0 port 22 or host x.x.x.x -nn -vvss -lntp、ss -u ln、netstat -s