Linux dropped解决方案
导读:Linux dropped 定位与解决方案 一 快速判断与分层定位 明确“dropped”出现的位置与含义:可能是网络接口统计中的 RX/TX dropped,也可能是内核/连接跟踪/防火墙等层面的丢包。 分层排查顺序建议:物理与链路 →...
Linux dropped 定位与解决方案
一 快速判断与分层定位
- 明确“dropped”出现的位置与含义:可能是网络接口统计中的 RX/TX dropped,也可能是内核/连接跟踪/防火墙等层面的丢包。
- 分层排查顺序建议:物理与链路 → 网卡驱动与队列 → 内核网络栈与连接跟踪 → 应用与系统资源。
| 层面 | 典型现象 | 关键命令 | 常见根因 | 处理要点 |
|---|---|---|---|---|
| 物理/链路 | ping 高丢包、traceroute 某跳异常 | ping、traceroute、ip a、route -n | MTU/路由异常、链路不稳定 | 校正 MTU、核对路由、排除物理链路问题 |
| 网卡驱动/Ring Buffer | ifconfig 显示 RX/TX dropped 增长;ethtool -S 见 rx_fifo 增长 | ifconfig、ethtool -S、ethtool -g/-G | Ring Buffer 不足、中断/CPU 处理不及时 | 增大 Ring Buffer、检查中断与 CPU 亲和、必要时降速/优化中断分布 |
| 内核 backlog | /proc/net/softnet_stat 某核第二列增长 | cat /proc/net/softnet_stat | netdev_max_backlog 不足 | 调大 netdev_max_backlog、提升软中断处理能力 |
| 分片重组 | netstat -s 见 fragments dropped after timeout / reassembles failed | netstat -s、dmesg | 分片超时/内存阈值/乱序 | 调整 ipfrag_time / ipfrag_high_thresh / ipfrag_low_thresh / ipfrag_max_dist |
| 连接跟踪 | dmesg 出现 “nf_conntrack: table full, dropping packet” | dmesg、conntrack -L、/proc/sys/net/netfilter/nf_conntrack_* | nf_conntrack 表满 | 增大 nf_conntrack_max / nf_conntrack_buckets、缩短超时、优化规则 |
| 防火墙/安全软件 | 规则误拦截、业务偶发断连 | iptables -S、nft list ruleset、journalctl | DROP/REJECT 规则、策略冲突 | 校正规则、临时停用验证、审计日志 |
| 资源瓶颈 | CPU/内存/带宽占用高、软中断飙高 | top、vmstat、iostat、mpstat -P ALL 1 | 资源竞争、磁盘 IO 高阻塞网络线程 | 限流/扩容、中断/队列优化、调优调度与 I/O |
二 关键命令与阈值示例
- 连通性与路径
- ping 目标 -c 20 观察丢包率;traceroute 定位异常跳点;ip a、route -n 核对 IP/掩码/路由。
- 接口与驱动
- ifconfig/ethtool 查看 RX/TX dropped、errors、overruns、fifo;ethtool -g/-G 查看/调整 Ring Buffer;必要时 ethtool -r 重新协商或固定速率/双工。
- 内核与协议栈
- /proc/net/dev 与 /proc/net/softnet_stat 检查 backlog 溢出;netstat -s 检查 分片重组 与超时;必要时调整 netdev_max_backlog、netdev_budget、ipfrag_*。
- 连接跟踪
- dmesg | grep nf_conntrack;conntrack -L;/proc/sys/net/netfilter/nf_conntrack_* 查看/调整 nf_conntrack_max / buckets / 超时。
三 常见场景与处置要点
- MTU/巨帧与路径 MTU
- 现象:大包业务时延抖动或偶发失败。处理:核对接口 MTU(常见 1500,条件允许可启用 巨帧),必要时启用 TCP MTU Probe 与合理分片策略。
- Ring Buffer 溢出
- 现象:ifconfig/ethtool 见 fifo/overruns 增长。处理:ethtool -G 增大 RX/TX Ring,检查中断与 CPU 亲和/多队列(RSS),必要时优化中断分布或升级网卡/驱动。
- 内核 backlog 溢出
- 现象:/proc/net/softnet_stat 某核第二列增长。处理:调大 net.core.netdev_max_backlog,并提升软中断处理能力(如适当增大 net.core.netdev_budget)。
- 分片重组失败/超时
- 现象:netstat -s 见 fragments dropped after timeout / reassembles failed。处理:适当增大 net.ipv4.ipfrag_time / ipfrag_high_thresh / ipfrag_low_thresh,必要时将 ipfrag_max_dist 设为 0 关闭安全距检查(仅在明确乱序来源时)。
- 连接跟踪表满
- 现象:dmesg 报 “nf_conntrack: table full”。处理:增大 nf_conntrack_max / nf_conntrack_buckets,缩短 nf_conntrack_tcp_timeout_established,梳理规则减少无用跟踪,必要时分流出高并发短连接流量。
- 防火墙/安全软件误拦截
- 现象:端口偶发不通或连接被重置。处理:审计 iptables/nftables 与主机安全软件策略,临时停用验证,修正规则顺序与匹配范围。
四 参数优化与变更建议
- 网络栈与队列
- 增大内核网络缓冲与队列:net.core.rmem_max、net.core.wmem_max;net.core.netdev_max_backlog;net.core.netdev_budget(结合 CPU/中断评估逐步调优)。
- 分片重组
- 视业务 RTT/乱序情况调整:net.ipv4.ipfrag_time、net.ipv4.ipfrag_high_thresh、net.ipv4.ipfrag_low_thresh、net.ipv4.ipfrag_max_dist(仅在明确乱序来源时关闭安全距检查)。
- 拥塞与传输
- 选择更契合链路的拥塞控制(如 BBR),在合规场景启用 TCP Fast Open;结合业务 RTT/带宽调优窗口与缓冲相关参数。
- 变更流程
- 任何 sysctl/ethtool 调整务必:备份配置 → 单参数小步调整 → 持续观测(丢包计数、时延、CPU/软中断)→ 必要时回滚。
五 监控与验证
- 持续观测
- 接口层:watch -n 1 “ifconfig ;ethtool -S | egrep ‘rx_fifo|overruns|dropped’”;/proc/net/dev 与 /proc/net/softnet_stat 关注增长趋势。
- 协议层:netstat -s | egrep ‘timeout|reassembles|fragments’;dmesg | grep -i nf_conntrack;conntrack -L 观察表使用率。
- 路径与连通:定期 ping/traceroute,业务侧记录时延与错误码,验证优化有效性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux dropped解决方案
本文地址: https://pptw.com/jishu/758855.html
