在 CentOS(以及各类 Linux 系统)中,“dropped” 通常出现在网络统计里(如 ifconfig、ip -s link、netstat -i、sar -n DEV 等),表示数据包被内核丢弃(dropped packets)。下面从“是什么、为什么、怎么查、怎么解决”四方面说明。
以网络接口为例:
ip -s link
输出中常见字段:
RX(接收)
bytes:字节数packets:收到的包数errors:错误包dropped:被丢弃的包TX(发送)
dropped ≠ 丢包到网络外,而是:
包到了网卡 / 内核,但内核决定不要它。
RX dropped 增长查看:
ethtool -g eth0
ethtool -S eth0 | grep -i drop
相关参数:
cat /proc/sys/net/core/netdev_max_backlog
iptables / nftablesDROP 规则检查:
iptables -L -v -n
现象:
RX droppeddmesg 中有:nf_conntrack: table full, dropping packet
查看:
dmesg | grep conntrack
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max
查看:
dmesg | grep -i "out of memory"
free -m
检查:
ethtool -k eth0
查看:
cat /proc/interrupts
mpstat -P ALL 1
# 1. 看 dropped 增长
ip -s link
# 2. 看是否 conntrack 满
dmesg | grep conntrack
# 3. 看网卡统计
ethtool -S eth0 | grep -i drop
# 4. 看 CPU 软中断
mpstat -P ALL 1
# 5. 看防火墙
iptables -L -v -n
| 问题 | 解决 |
|---|---|
| Ring buffer 小 | ethtool -G eth0 rx 4096 |
| backlog 小 | sysctl -w net.core.netdev_max_backlog=5000 |
| conntrack 满 | 增大 nf_conntrack_max |
| IRQ 不均 | 开启 irqbalance 或手动绑核 |
| 防火墙误丢 | 修改 iptables 规则 |
CentOS 中的 dropped,本质是“内核主动或被动丢弃数据包”,最常见原因是接收速度超过处理能力(网卡、CPU、内存、防火墙)。
如果你愿意,可以贴一下:
ip -s linkethtool -S eth0dmesg我可以帮你精准判断是哪一种 dropped。