温馨提示×

为何centos dropped增多

小樊
36
2026-10-12 00:33:18
栏目: 智能运维

在 CentOS(或一般 Linux 系统)中,dropped 增多通常指网络层面的 packet dropped(丢包) 或系统指标里看到的 dropped 计数上升。下面按常见场景系统说明原因和排查思路。


一、先确认“dropped”指的是哪里

常见位置有:

  1. 网卡统计(ethtool / ifconfig)
    RX dropped、TX dropped
    
  2. 网络栈统计(/proc/net/dev、netstat -s)
  3. 监控工具(sar、nload、Prometheus/node_exporter)
  4. iptables / nftables DROP
  5. 连接跟踪(conntrack)丢包
  6. 应用层(如 Nginx、HAProxy dropped)

二、常见原因及排查方法

1. 网卡接收丢包(RX dropped)

常见原因

  • 网卡 ring buffer 太小
  • 中断不均(单核软中断过高)
  • 流量突发超过处理能力
  • 网卡 offload 异常

排查

ethtool -S eth0 | grep -i drop
ethtool -g eth0

优化示例

ethtool -G eth0 rx 4096 tx 4096

2. 软中断 / CPU 瓶颈

现象

  • si CPU 占用高
  • 单核软中断打满

排查

top
mpstat -P ALL 1
cat /proc/interrupts | grep eth

解决

  • 开启 RPS / RFS
  • 绑定中断到不同 CPU
  • 调整 net.core.netdev_budget

3. 内核参数不合理

关键参数

net.core.rmem_max
net.core.wmem_max
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
net.core.netdev_max_backlog

示例优化

sysctl -w net.core.netdev_max_backlog=5000

4. conntrack 表满(非常常见)

现象

  • 大量短连接
  • 防火墙启用 state 模块

查看

dmesg | grep conntrack
cat /proc/sys/net/netfilter/nf_conntrack_count

解决

sysctl -w net.netfilter.nf_conntrack_max=1048576

5. iptables / firewalld 显式 DROP

排查

iptables -L -n -v

6. 内存不足 / OOM 相关

  • 系统内存紧张
  • slab 占用过高(如 conntrack)

7. 应用层 dropped

如:

  • Nginx:request_time 高、worker 不够
  • HAProxy:dropped conn

三、快速定位思路(推荐顺序)

  1. ethtool -S eth0 | grep drop
  2. cat /proc/net/dev
  3. netstat -s | grep -i drop
  4. dmesg | grep -i drop
  5. 看 CPU si 是否高
  6. 看 conntrack 是否满

四、如果你愿意

你可以补充:

  • CentOS 版本(7 / 8 / Stream)
  • dropped 出现位置(网卡?监控?应用?)
  • 是否有高并发 / 短连接
  • 是否使用 firewalld / iptables

我可以直接给你针对性调优方案。

0 踩