首页主机资讯Linux dropped如何避免

Linux dropped如何避免

时间2025-12-04 12:42:04发布访客分类主机资讯浏览628
导读:Linux dropped 丢包的成因与规避 一 快速定位思路 明确丢包位置:链路/对端、网卡硬件队列、内核网络栈、连接队列、应用缓冲区。 基础巡检: 端到端连通与路径:ping、traceroute 检查丢包率与跳点异常。 接口与地址...

Linux dropped 丢包的成因与规避

一 快速定位思路

  • 明确丢包位置:链路/对端、网卡硬件队列、内核网络栈、连接队列、应用缓冲区。
  • 基础巡检:
    • 端到端连通与路径:ping、traceroute 检查丢包率与跳点异常。
    • 接口与地址:ip a、route -n 检查 IP/掩码/网关/路由 是否正确。
    • 协商与驱动:ethtool 查看 Speed/Duplex/AutoNeg;必要时 ethtool -r 重新协商或固定速率;lspci/驱动版本核查。
    • 资源瓶颈:top/vmstat 检查 CPU/内存/带宽/磁盘IO 是否过载。

二 常见原因与对应规避措施

  • 网卡 Ring Buffer 溢出(RX fifo/overruns 增长)
    • 现象:ifconfig/ethtool -S 中 RX overruns/rx_fifo_errors 持续增加。
    • 规避:适当增大网卡 RX/TX ring;优化中断与 RPS/XPS 亲和;必要时固定端口速率/双工,排查对端与链路质量。
    • 参考:ethtool -g 查看;ethtool -G rx 4096 tx 4096 调整;检查中断分布与 CPU 负载。
  • 内核网络栈 backlog 溢出(softnet backlog)
    • 现象:/proc/net/softnet_stat 某 CPU 行第 2 列 增长(netdev backlog 溢出)。
    • 规避:提升 net.core.netdev_max_backlog;加速软中断处理(RPS/XPS、中断亲和、减少 CPU 软中断瓶颈)。
  • TCP 连接队列溢出(SYN 或 accept 队列)
    • 现象:netstat -s | grep -i listen 出现 SYNs to LISTEN sockets dropped 或 “listen queue overflowed”;ss -lnt 中 Recv-Q 长期接近 Send-Q
    • 规避:增大 net.ipv4.tcp_max_syn_backlognet.core.somaxconn;应用合理设置 listen(backlog);必要时开启 net.ipv4.tcp_abort_on_overflow
  • 反向路由过滤 rp_filter 误丢
    • 现象:严格/松散模式导致入包源地址不可达而被丢弃。
    • 规避:依据拓扑设置 rp_filter=2(松散)0(关闭);确保入包的反向路径可达。
  • 连接跟踪表 nf_conntrack 满
    • 现象:dmesg/日志出现 nf_conntrack: table full, dropping packet
    • 规避:增大 nf_conntrack_maxhashsize;缩短 nf_conntrack_tcp_timeout_established;优化连接复用/减少短连接;必要时分流出大流量或关闭连接跟踪(仅限明确安全边界)。
  • ARP 表溢出
    • 现象:dmesg 出现 neighbor table overflow;cat /proc/net/stat/arp_cache 的 table_fulls 增长。
    • 规避:提升 net.ipv4.neigh.default.gc_thresh1/2/3(如 1024/2048/4096);核查异常 ARP 洪泛与二层拓扑。
  • MTU/分片重组问题
    • 现象:netstat -s 中 fragments dropped after timeout 或重组失败计数增长。
    • 规避:统一 MTU;必要时调整 net.ipv4.ipfrag_time 与分片相关内存阈值。

三 关键参数与命令清单

  • 建议先基线采集:ifconfig 、ethtool -S 、cat /proc/net/dev、cat /proc/net/softnet_stat、ss -lnt、netstat -s、ip a、route -n、ping/traceroute。
  • 常用调优示例(按场景按需调整,变更前评估与灰度):
    • 网卡 Ring Buffer:ethtool -g ;ethtool -G rx 4096 tx 4096
    • 软中断与 backlog:sysctl -w net.core.netdev_max_backlog=2000(结合 CPU/负载评估)
    • TCP 队列:sysctl -w net.core.somaxconn=4096;sysctl -w net.ipv4.tcp_max_syn_backlog=4096;sysctl -w net.ipv4.tcp_abort_on_overflow=1
    • 反向路由过滤:sysctl -w net.ipv4.conf.all.rp_filter=2;或针对接口 sysctl -w net.ipv4.conf..rp_filter=2
    • 连接跟踪:sysctl -w net.netfilter.nf_conntrack_max=1048576;sysctl -w net.netfilter.nf_conntrack_buckets=262144;sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=600
    • ARP:sysctl -w net.ipv4.neigh.default.gc_thresh1=1024;sysctl -w net.ipv4.neigh.default.gc_thresh2=2048;sysctl -w net.ipv4.neigh.default.gc_thresh3=4096
    • 分片重组:sysctl -w net.ipv4.ipfrag_time=60
  • 变更原则:小步调整、持续观测(丢包计数、RTT、CPU 软中断、应用错误率),并做好回滚预案。

四 应用层与架构侧的规避

  • 控制发送速率与突发:UDP/ICMP 无内置流控,应用需限速/令牌桶,避免瞬时突发压满 socket 发送缓冲与网卡队列。
  • 合理设置 socket 缓冲:为长肥管道(高 BDP)增大 SO_RCVBUF/SO_SNDBUF;系统层面可调整 net.core.rmem_default/wmem_default、rmem_max/wmem_max,并结合 BDP=带宽×RTT 估算所需缓冲规模。
  • 减少短连接与握手风暴:启用长连接/连接池/HTTP keepalive;优化服务并发与 accept 能力,避免 accept 队列长期打满。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux dropped如何避免
本文地址: https://pptw.com/jishu/763434.html
如何自定义Debian Apache响应头 如何通过Ubuntu日志优化Web服务器性能

游客 回复需填写必要信息