连接协议选择
强制使用 UDP,1% 丢包在 TCP 下会被放大为严重的延迟,而 UDP 下则基本无影响。
增加缓冲区
根据实际延迟与最大带宽计算出合理的缓冲区大小,单位为字节。
如延迟为100ms,最大带宽为100Mbps,那么缓冲区大小应该为100ms * 100Mbps * 1000 / 8 = 1250000Bytes。对应的配置为:
1 2 3 4
| sndbuf 1250000 rcvbuf 1250000 push "sndbuf 1250000" push "rcvbuf 1250000"
|
上述值还可以适当调大。
增加服务器的TCP/UDP缓冲区大小
在/etc/sysctl.conf中添加以下内容:
1 2 3 4 5 6 7 8 9
| # 增大内核 UDP 缓冲区限制,适配高带宽深管道(BDP) net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.rmem_default=16777216 net.core.wmem_default=16777216
# 启用 BBR 拥塞控制算法(对高延迟环境至关重要) net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
|
提高nginx的缓冲区大小
修改nginx的配置文件,添加/修改如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| http { server { listen 443 quic reuseport; # 启用 QUIC http3 on; # 启用 HTTP/3
# 核心:增大单条 H3 流的缓冲区 # 设为 12m 可以支撑 200ms 延迟下约 500Mbps 的理论吞吐量 http3_stream_buffer_size 12m; # 增大单条 H3 流的缓冲区
# 增大代理缓冲区 proxy_buffers 16 1024k; proxy_busy_buffers_size 15360k; } }
|