假期对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也是一样的慢.


但是不使用http3,使用http2,http1.1的速度如下,分别是不开启BBR和开启BBR:

不开启bbr




开启bbr

开启BBR后感觉速度稳定一些了.





所以我的结论是没有找到合适的方案.
香港中国移动的出国链路并不稳定,和香港宽频的相差有点大.



评论

此博客中的热门博文

uptime-kuma部署和批量添加

在南京见到的农民工午饭情景

ffmpeg 下实现 h265 hevc编码的 hls 服务的过程一些收藏和介绍