1. 网卡多队列配置
通过ethtool -l eth0
查看网卡队列状态(如Combined
队列数),使用ethtool -L eth0 combined 8
启用多队列处理(队列数建议与CPU核心数匹配),避免网络中断争用,提升多核处理效率。
2. Ring Buffer调整
动态调整网卡接收/发送环形缓冲区大小(默认值较小,易导致高负载下丢包),使用ethtool -G eth0 rx 4096 tx 4096
设置(突发流量场景建议提升至8192以上),增加缓冲区容量以容纳更多数据包。
3. UDP校验和卸载
启用硬件校验和加速(减少CPU处理UDP包的开销),使用ethtool -K eth0 rx-checksum on tx-checksum on
命令,适用于UDP流量较大的场景(如视频流、DNS查询)。
1. 网络设备积压队列优化
增大net.core.netdev_max_backlog
参数值(默认1000,易导致半连接/全连接队列溢出),例如设置为30000,缓解突发流量下的队列积压,减少因队列满导致的丢包。
2. TCP缓冲区动态调整
优化TCP接收/发送缓冲区大小(默认值可能不适合高带宽场景),使用sysctl
命令设置:
net.ipv4.tcp_rmem='4096 131072 16777216'
(最小/默认/最大接收窗口)、
net.ipv4.tcp_wmem='4096 16384 16777216'
(发送窗口),提升高带宽、高延迟网络的吞吐量。
3. 拥塞控制算法选择
启用BBRv3算法(替代传统CUBIC算法),更适合高延迟、高带宽网络(如跨数据中心传输),使用sysctl -w net.ipv4.tcp_congestion_control=bbr
命令,提升吞吐量并减少丢包。
4. TCP队列参数优化
net.ipv4.tcp_max_syn_backlog
(默认128,应对SYN Flood攻击时可调至2048);net.core.somaxconn
(默认128,高并发场景可调至32768);net.ipv4.tcp_syncookies=1
(防止SYN Flood攻击导致队列溢出);net.ipv4.tcp_synack_retries=2
(减少重传次数,加快连接建立速度)。1. 启用TCP快速打开(TFO)
减少TCP三次握手延迟(首次握手即可传输数据),使用sysctl -w net.ipv4.tcp_fastopen=3
(同时支持客户端和服务端),适用于短连接高频场景(如HTTP请求)。
1. QoS策略实施
使用tc
工具对关键业务流量(如Web服务端口80、数据库端口3306)标记优先级,例如:
tc qdisc add dev eth0 root handle 1: htb default 30 # 根队列采用HTB算法
tc class add dev eth0 parent 1: classid 1:1 htb rate 1Gbit ceil 1Gbit # 父类带宽限制
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:1 # 将80端口流量划入高优先级队列
确保关键业务流量优先处理,避免被非关键流量抢占。
2. 中断亲和性绑定
将网卡中断绑定到特定CPU核心(减少中断跨核心迁移的开销),使用cat /proc/interrupts | grep eth0
获取中断号,然后通过echo 0f > /proc/irq/<中断号>/smp_affinity
命令绑定(0f表示绑定到CPU0-3)。
1. 实时丢包检测
组合使用工具链监控硬件级丢包(如网卡环形缓冲区溢出)和网络接口状态:
watch -n 1 "ethtool -S eth0 | grep -E 'discard|error'"
(实时查看网卡丢包计数器,如rx_fifo_errors
、tx_fifo_errors
);nload -u M -i 10000 -o 10000 eth0
(监测带宽利用率,识别流量峰值)。2. XDP加速排查
对于使用eBPF/XDP的场景(如高性能负载均衡),使用bpftool prog show
检查XDP程序是否正常运行,定位丢包点(如XDP程序过滤过多流量)。
以上技巧覆盖了从硬件到应用层的全链路优化,可根据实际场景(如高并发Web服务、数据库服务器、视频流传输)选择针对性措施。优化前需备份系统配置(如/etc/sysctl.conf
),并通过压力测试(如wrk
、iperf3
)验证效果。