Linux dropped网络优化
导读:Linux dropped 网络优化实战指南 一 快速定位与监控 识别丢包位置与趋势 查看接口统计:ifconfig 或 ip -s link,关注 RX/TX 的 dropped、overruns、errors 是否持续增长。 查看软...
Linux dropped 网络优化实战指南
一 快速定位与监控
- 识别丢包位置与趋势
- 查看接口统计:ifconfig 或 ip -s link,关注 RX/TX 的 dropped、overruns、errors 是否持续增长。
- 查看软中断是否“打满”CPU:cat /proc/interrupts 找到网卡队列对应的 CPU,再用 top/htop 观察这些 CPU 的 si(软中断)占用是否异常。软中断过高常见于单核承载过多队列或处理逻辑瓶颈。
- 关联负载与连接
- 连接与负载:ss -s、netstat -s、sar -n DEV/EDEV 1 观察 pps、bps、重传、半开连接 等指标,判断是突发流量、连接风暴还是协议栈瓶颈。
- 路由与防火墙:route -n、ip rule、iptables/firewalld -L 检查是否存在 错路由、黑洞、策略限速/连接跟踪满 等问题。
二 网卡与驱动层优化
- 队列与中断绑定
- 调整队列数量:ethtool -l eth0 查看,ethtool -L eth0 rx 8(或 combined 8)提升并行度;注意部分虚拟设备不支持。队列变化会短暂中断链路。
- 中断亲和与多队列:/proc/interrupts 确认各队列中断分布,使用 smp_affinity_list 将队列中断分散到不同 CPU,避免单核软中断拥塞。
- 缓冲与中断合并
- 环形缓冲:ethtool -g eth0 查看/调整 RX/TX ring,适当增大以吸收突发流量(需结合内存与延迟权衡)。
- 中断合并:ethtool -C eth0 adaptive-rx on rx-usecs 50-100(示例值)降低中断频率、提升大流量吞吐;过小会增加 CPU,过大增加时延。
- 驱动与固件
- 更新网卡驱动与固件、升级内核修复已知 驱动丢包/溢出 问题;检查链路协商速率/双工、更换故障网线/光模块。
三 内核网络栈与协议参数优化
- 套接字与内核缓冲
- 增大套接字与内核接收缓冲,缓解高带宽/突发流量下的 socket 溢出 与 netdev backlog 溢出:
- sysctl -w net.core.rmem_default=8388608
- sysctl -w net.core.rmem_max=16777216
- sysctl -w net.core.wmem_default=8388608
- sysctl -w net.core.wmem_max=16777216
- sysctl -w net.core.netdev_max_backlog=2000-5000
- 增大套接字与内核接收缓冲,缓解高带宽/突发流量下的 socket 溢出 与 netdev backlog 溢出:
- TCP 连接与稳定性
- 高并发短连接:增大半连接与全连接队列,启用 SYN Cookies 抵御洪泛
- sysctl -w net.ipv4.tcp_max_syn_backlog=4096-16384
- sysctl -w net.core.somaxconn=4096-16384
- sysctl -w net.ipv4.tcp_syncookies=1
- 加速失败重试与资源回收
- sysctl -w net.ipv4.tcp_syn_retries=2-3
- sysctl -w net.ipv4.tcp_synack_retries=2-3
- sysctl -w net.ipv4.tcp_fin_timeout=30
- sysctl -w net.ipv4.tcp_keepalive_time=120
- 高并发短连接:增大半连接与全连接队列,启用 SYN Cookies 抵御洪泛
- 持久化与生效
- 将关键参数写入 /etc/sysctl.conf 或 /etc/sysctl.d/99-network.conf,执行 sysctl -p 生效。
四 典型场景与建议参数
- 大流量 UDP/TCP 接收(遥测、日志、视频)
- 目标:降低 RX dropped/overruns,提升软中断并行度与缓冲吸收能力
- 建议:
- ethtool -L eth0 rx 8(或 combined 8),smp_affinity_list 分散中断
- ethtool -g eth0 适度增大 RX ring
- ethtool -C eth0 adaptive-rx on rx-usecs 50-100
- sysctl -w net.core.rmem_default=8388608;net.core.rmem_max=16777216
- sysctl -w net.core.netdev_max_backlog=2000-5000
- 高并发短连接(API/网关/负载均衡)
- 目标:减少 SYN 丢弃、accept 队列溢出
- 建议:
- sysctl -w net.ipv4.tcp_max_syn_backlog=16384
- sysctl -w net.core.somaxconn=16384
- sysctl -w net.ipv4.tcp_syncookies=1
- sysctl -w net.ipv4.tcp_syn_retries=2;net.ipv4.tcp_synack_retries=2
- sysctl -w net.ipv4.tcp_abort_on_overflow=0
- 长肥管道/跨地域高带宽
- 目标:提升 窗口与缓冲,减少时延与重传
- 建议:
- sysctl -w net.core.rmem_max=16777216;net.core.wmem_max=16777216
- sysctl -w net.ipv4.tcp_rmem=“4096 87380 16777216”
- sysctl -w net.ipv4.tcp_wmem=“4096 65536 16777216”
- sysctl -w net.ipv4.tcp_mem=“786432 1048576 26777216”
- 视链路 MTU 与分片情况,必要时调优 MTU(如 jumbo frame)。
五 验证与回退
- 验证方法
- 持续观察:ifconfig/ip -s link、cat /proc/interrupts、ss -s、sar -n DEV/EDEV 1,确认 dropped/overruns 与 si 占用下降,连接成功率与延迟改善。
- 业务侧回归:压测/回放真实流量,核对 pps/bps、重传率、超时 等指标是否达标。
- 变更管控
- 逐项调整、每次变更后留出观察窗口;保留回退方案(如 ethtool -L/-C 恢复、sysctl 恢复默认值),变更前备份配置文件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux dropped网络优化
本文地址: https://pptw.com/jishu/756436.html
