温馨提示×

怎么处理centos dropped

小樊
43
2026-09-03 03:29:28
栏目: 智能运维

在 CentOS 里看到 dropped(丢包)通常出现在网络或系统资源层面。要“处理”它,先要分清在哪里看到的 dropped,再针对性解决。下面按常见场景给你一个排查与处理清单。


一、先确认 dropped 出现在哪里

1. 网络接口 dropped(最常见)

ip -s link
# 或
ifconfig

看到类似:

RX packets ... dropped: 123
TX packets ... dropped: 0

2. 网卡队列丢包

ethtool -S eth0 | grep -i drop

3. 连接跟踪表满(conntrack dropped)

dmesg | grep conntrack

cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max

4. socket 缓冲区丢包

netstat -s | grep -i drop
ss -s

二、常见原因与对应处理方法

场景 1:网卡 RX dropped

原因

  • 网卡队列满
  • 中断不均衡
  • 内核收包慢(CPU 不够)

处理

# 增大网卡 ring buffer
ethtool -G eth0 rx 4096 tx 4096

# 开启多队列
ethtool -L eth0 combined 8

# 中断均衡
irqbalance
systemctl enable irqbalance

场景 2:conntrack 丢包(大量短连接)

现象

nf_conntrack: table full, dropping packet

处理

sysctl -w net.netfilter.nf_conntrack_max=655360
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30

写入配置:

/etc/sysctl.d/99-conntrack.conf

场景 3:socket 缓冲区不足

处理

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

场景 4:系统 backlog 满

sysctl -w net.core.netdev_max_backlog=16384
sysctl -w net.core.somaxconn=65535

场景 5:CPU 软中断过高

top
# 看 si 列

处理

  • 绑定网卡中断到指定 CPU
  • 升级内核 / 驱动
  • 使用 DPDK(高性能场景)

三、快速排查流程(推荐)

  1. ip -s link → 看哪个网卡 dropped
  2. ethtool -S eth0 | grep drop
  3. dmesg | grep drop
  4. netstat -s | grep drop
  5. 根据上面场景改内核参数

四、如果你愿意,我可以更精确帮你

你可以补充:

  • CentOS 版本(7 / 8 / Stream)
  • 在哪里看到的 dropped(命令或日志)
  • RX 还是 TX
  • 是否高并发 / 高流量场景

我可以直接给你一套可复制的配置

0