Linux dropped怎么维护
导读:Linux dropped 的含义与维护思路 一、先明确 dropped 的具体场景 出现在网络监控或网卡统计中:如 ifconfig/ethtool -S 显示 RX dropped、TX dropped,表示网卡或内核网络栈在处理数据...
Linux dropped 的含义与维护思路
一、先明确 dropped 的具体场景
- 出现在网络监控或网卡统计中:如 ifconfig/ethtool -S 显示 RX dropped、TX dropped,表示网卡或内核网络栈在处理数据包时被丢弃,常见与驱动/Ring Buffer/队列/连接跟踪等有关。
- 出现在系统日志中:如 nf_conntrack: table full, dropping packet,表示连接跟踪表满导致新连接被丢弃。
- 出现在服务或客户端侧:如新连接建立失败、出现 connection reset by peer、访问超时,常与 半连接/全连接队列溢出 相关。
- 出现在系统/会话层面:如 SSH/终端意外断开、会话“dropped”,多与系统异常、资源不足或配置错误有关。
二、网络层面的 dropped 维护清单
- 快速定位
- 查看接口丢包:ip -s link show;ethtool -S | egrep ‘drop|Drop|errors’;ifconfig 。
- 检查内核与系统日志:dmesg | tail -n 200;journalctl -xe;grep -i drop /var/log/messages /var/log/syslog。
- 抓包定位:tcpdump -ni any -vv port < 业务端口> 。
- 常见根因与处置
- 连接跟踪表满(nf_conntrack)
- 现象:日志出现 “nf_conntrack: table full, dropping packet”。
- 处置:适度调大 net.netfilter.nf_conntrack_max 与 nf_conntrack_buckets,并缩短 nf_conntrack_tcp_timeout_established;必要时过滤不需要跟踪的流量(如已做 SNAT 的返回流量)。
- 参考计算(64 位):CONNTRACK_MAX ≈ RAM_BYTES / 16384 / 2;哈希桶建议为 nf_conntrack_max / 4。示例(64GB 内存):nf_conntrack_max=2097152,buckets=524288。修改后持久化到 /etc/sysctl.conf 并评估重启窗口。
- 半连接/全连接队列溢出
- 现象:netstat -s | egrep ‘listen queue|overflowed|SYNs.*dropped’ 持续增长;客户端大量超时或 RST。
- 处置:调大 net.core.somaxconn 与 listen(backlog);视业务调 net.ipv4.tcp_max_syn_backlog;必要时设置 net.ipv4.tcp_abort_on_overflow=1 快速失败;优化应用并发与 accept 能力。
- Ring Buffer/驱动层丢包
- 现象:ethtool -S 显示 rx_fifo_errors/rx_over_errors/rx_missed_errors 增长。
- 处置:适度增大网卡 rx/tx ring 与 rss/napi 队列;升级驱动与固件;检查物理链路/双工/速率协商与交换机端口错包。
- 防火墙/策略/连接跟踪策略误伤
- 处置:iptables-save -t filter/nat/mangle 检查 DROP/REJECT;排查是否对大量短连接或未必要流量做连接跟踪;对已知返回流量使用 NOTRACK/RAW 表跳过跟踪。
- 连接跟踪表满(nf_conntrack)
三、系统层面的 dropped 维护清单
- 系统日志与内核消息
- 使用 journalctl -xe、dmesg、/var/log/messages 定位 OOM、驱动异常、文件系统只读等导致的会话/服务中断。
- 资源与硬件健康
- 监控内存/CPU/IO:top/vmstat/iotop;检查温度(如 lm-sensors);磁盘健康(如 smartctl);必要时做内存测试(如 memtest86+)。
- 文件系统与启动
- 异常关机/只读挂载后执行文件系统检查(如 fsck);必要时进救援/单用户模式修复;更新引导(如 GRUB)与 initramfs。
- 软件与服务
- 保持系统与驱动更新;回滚近期变更验证问题;按需在 systemd 中设置 Restart= 与 RestartSec 提升自愈;对关键数据实施定期备份与演练恢复。
四、面向运维的常态化预防与优化
- 建立基线:定期采集并记录 ifconfig -s/ethtool -S、netstat -s、nf_conntrack 计数、dmesg 错误、关键业务延迟/丢包,便于对比异常。
- 容量规划:结合并发连接数规划 nf_conntrack_max 与 buckets,避免“表满”与哈希冲突;对大流量/NAT 场景优先使用连接跟踪旁路策略。
- 队列与协议栈调优:按业务峰值调优 somaxconn/tcp_max_syn_backlog,合理设置 tcp_abort_on_overflow;缩短 ESTABLISHED 超时以回收连接;必要时启用 tcp_tw_reuse 等策略缓解端口/状态压力(需充分测试)。
- 驱动与硬件:使用稳定版驱动与固件;关注网卡队列、中断绑定(RPS/XPS)与 RSS 配置;对物理链路与交换机端口进行错包/误码巡检。
- 变更与回滚:内核/驱动/防火墙/应用配置变更采用灰度与回滚预案;变更前后保留日志与监控截图,便于快速定位。
五、高频命令速查表
| 目标 | 命令示例 |
|---|---|
| 接口丢包与错误 | ip -s link show; ethtool -S |
| 内核与系统日志 | dmesg |
| 抓包定位 | tcpdump -ni any -vv port |
| 连接跟踪状态 | cat /proc/sys/net/netfilter/nf_conntrack_{ max,count} ; dmesg |
| 队列溢出检查 | netstat -s |
| 动态调优示例 | sysctl -w net.netfilter.nf_conntrack_max=2097152; sysctl -w net.core.somaxconn=32768 |
| 持久化 | echo “net.netfilter.nf_conntrack_max=2097152” > > /etc/sysctl.conf & & sysctl -p |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux dropped怎么维护
本文地址: https://pptw.com/jishu/747660.html
