Ubuntu Dropped优化方法
导读:Ubuntu Dropped优化方法 一 快速定位 Dropped 来源 明确“dropped”发生在哪一层:物理网卡、内核网络栈、容器/虚拟网卡,还是上层应用队列。 查看网卡层统计(关注 RX/TX 的 errors、dropped、o...
Ubuntu Dropped优化方法
一 快速定位 Dropped 来源
- 明确“dropped”发生在哪一层:物理网卡、内核网络栈、容器/虚拟网卡,还是上层应用队列。
- 查看网卡层统计(关注 RX/TX 的 errors、dropped、overruns、carrier、collisions):
- ip -s link show
- ifconfig
- 或使用 sar -n DEV/EDEV 观察接口吞吐、PPS 与错误:sar -n DEV 1
- 查看协议栈与套接字队列:
- ss -ntlp 观察全连接队列(Recv-Q/Send-Q)与监听队列长度
- netstat -nlp 辅助查看
- 容器/虚拟化场景注意:
- veth 对端统计不完整,优先在主机侧用 ethtool -S 或 ip -s 查看真实物理口
- 若使用 tc/netem 等限速/丢包策略,需检查是否被策略主动丢弃:tc qdisc show dev eth0
二 网卡与驱动层优化
- 调整 Ring Buffer(RX/TX):高并发/大流量下适当增大可减少因缓冲不足导致的丢包
- 查看:ethtool -g eth0
- 调整:ethtool -G eth0 rx 1024 tx 1024(示例值,按网卡与负载实测微调)
- 中断协同(Interrupt Coalescing):在降低中断频率与增加延迟之间取平衡
- 查看:ethtool -c eth0
- 调整:ethtool -C eth0 rx-usecs 50 rx-frames 32(示例:延迟约 50µs,聚合 32 帧)
- 速率/双工与自协商:确保与对端一致,避免双工不匹配与误协商
- 设置:ethtool -s eth0 speed 1000 duplex full autoneg on
- 校验物理链路:观察 carrier、collisions 等指标,排查网线、双工、交换机端口问题
三 内核网络与 UDP/TCP 栈优化
- 增大套接字与内核接收缓冲,缓解高速 UDP 场景的“dropped”
- 系统上限:sysctl -w net.core.rmem_max=60000000(示例 60MB)
- 队列容量:sysctl -w net.core.netdev_max_backlog=6000(示例 6000)
- 应用侧配合:setsockopt 将应用接收缓冲设置接近系统上限(不得超过 rmem_max)
- MTU 适配:在叠加网络(如 VXLAN)或链路存在分片时,适当调小 MTU(如 1280)可降低处理开销与重组概率
- 容器/策略层排查:若使用 tc/netem 限速/丢包,先移除或调整策略验证影响
四 容器与虚拟化场景的要点
- 容器 veth 统计不完整,优先在宿主机物理口(如 eth0)或网桥(如 docker0/br-)上查丢包
- 检查是否配置了 QoS/限速/丢包策略(tc qdisc),这些策略导致的丢包不会体现在 veth 统计中
- 若使用虚拟交换机/叠加网络,关注封装开销、MTU 与主机/虚拟网卡队列配置一致性
五 监控与验证
- 基线对比:在调整前后用同一组命令采集指标,观察 dropped、overruns、errors、PPS、吞吐的变化趋势
- sar -n DEV/EDEV 1(接口层实时统计)
- ip -s link、ifconfig(错误与丢包计数)
- ss -ntlp(队列与连接状态)
- 场景化压测:结合业务流量模型(并发连接数、包长、UDP/TCP 比例)进行回归测试,逐步微调 Ring Buffer、中断协同与缓冲上限
- 风险提示:内核/网卡参数修改会影响稳定性与延迟,务必在非生产环境充分验证,并做好变更记录与回滚方案
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Dropped优化方法
本文地址: https://pptw.com/jishu/763225.html
