假期对http3(quic)协议进行了测试,怎么变慢了?
结论:
经过我的测试,原来直接使用http2,http1.1下载一个资源速度大概可以达到13MB/S.但使用http3后速度只有200-300KB/S左右.
速度下降非常多,这和网上一致说的http3变快完全不一样.
前述:
这个国庆假期由于国际学校并不放假,所以我还得在这里服务于James,而她妈和大果已经回国了,我闲得无聊,就想加速一下国际出国的链接.
一边和GPT聊着,一边测试.
先看看我这边的网络条件:
两个点之间的速度本身也是不错的,只是说下载大文件的时候速度根不上,一些高清视频会卡.
如果使用UDP来测试: |
使用TCP方式直接测试 |
10个进程:默认可以达到: iperf3 -c uk1-lb02.shegu.net -R -t 10 -b 10000M -P 10 |
BBR方案:
首先是BBR的方案,似乎这个方案有点效果,单边启用和双边启用都有效果,根据我的测试如下:
开启:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
22 1636M 22 371M 0 0 12.3M 0 0:02:12 0:00:29 0:01:43 13.3M
下载端不开启,速度也不错,但不稳定
# curl "https://uk1-lb02.xxxx.net/p1/test/1.mp4" > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
42 1636M 42 696M 0 0 11.8M 0 0:02:17 0:00:58 0:01:19 9959k
ss -i 看到如下:
双边都关闭的:
似乎有一些效果,但并不明显,开了BBR后感觉好像快了一些.
KCPtun:
然后测试了KCPtun的这个方案,部署是最省事的,也是最快的,但实际测试速度也是变慢了.
经过多次测试,包括使用wget的方式,都是变慢,但好处就是初始加速好像变快了,就是说普通下载就慢慢的达到最大的下载速度,但经过这个方案后很快就能达到最大速度.但这个速度似乎在nginx反向代理中并不生效.
QUIC方案:
接下来就是使用http3,quic的测试了, 这个测试并不顺利,多次被GPT带到了沟里了.
其次就是curl这个命令不支持http3,所以弄这个工具很麻烦,最终还是使用docker来运行最快的.
使用这样的命令最简单:
docker run -it --rm ymuski/curl-http3 curl --http2 "https://uk1-lb02.shegu.net/p1/test/1.mp4" -v --output /dev/null
其次就是nginx支持http3也是很麻烦,需要重新编译,这个过程也还好:
nginx1.27不支持以下的写法,但1.25还支持,还没有找到文档,在这里浪费了很多时间.
listen 443 ssl http2 ;
listen 443 quic reuseport; 这样写就可以了.
listen 443 http3 reuseport; 以下一开始GPT给的是这样的,并不能用
等这些都解决了,测试结果并不满意:
通过chrome播放这个视频大概要13秒的样子,一开始以为是客户端的问题,但chrome也是一样的慢.
所以我的结论是没有找到合适的方案.
评论