-
Notifications
You must be signed in to change notification settings - Fork 758
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
quiche(http3) is slower than HTTP2 #1486
Comments
Thanks for the report. Can you explain a bit more about how you measure Are you measuring timings over the same page? Or at least pages of roughly equal size? What is the page/asset size? |
The request_time is from the nginx logs. The log result above is order by cost in a period of time , such as 24 hours , the request_time of HTTP3 is always on the top . The first picture is that every hour average request_time to make a graph. NO HTTP3: select now() as time, avg(cost) as NTTP3_COST where rq not like '%HTTP/3%'
Our website is https://www.yfn.com , having HTTP3 and HTTP2 service at the same time. We do not set the "alt-svc" header . Because I have found that some clients having no mature HTTP3 fuction (maybe lower HTTP3 version supported) which request_time too high in the nginx logs. Other clients still can connect to our HTTP3 service without "alt-svc" header although(I think that their HTTP3 verions are higher enough). You could have a test for our website. |
Server side request_time isn't a very accurate measure because once data is handed off to the kernel the application loses visibility, especially true for TCP. Have you confirmed these results using client-side measurements? |
Hello, I encountered some problems when configuring the quic service of NGINX. My configuration is the same as the official website, but I still cannot use the quic protocol when accessing the server, and h2 protocol is still used. This is the configuration:
|
Maybe you could try the firefox or EDGE rather than Chrome . I think the browser manages the protocols swithing . |
Thank you very much for your reply. However, the latest version of NGINX has started to support the quic protocol, and I have successfully configured it. |
First you should configure your nginx to using json log output
The second , Using AliBaba cloud SLS service (logtail tool , you could install in your server,not only the Alibaba could server ) to collect the nginx log data. Using the data to draw your graph you need . You could use it like SQL. The Experience is like Kibana. '"cost":"$request_time",' To analyze the "cost" column in minutes/hour average you can find something. |
Hello, I made the same effect with you through the local self-matching server, QUIC protocol download speed is indeed not as good as TCP protocol, but its upload speed is better than TCP protocol, I would like to ask you know the reason? |
I suspect it's a congestion control issue, I think it would be faster if BBR was used, especially when the RTT is very high. |
Here are some articles "QUIC is not Quick Enough over Fast Internet" may explain the issue : |
I think it has something to do with the send buffer. If the send buffer is too small, it will damage the performance of the high-latency link. |
Regarding send buffering, that's been at the back of my mind for a while actually, so I made #1921 which adds a configuration option to increase the send capacity by a given factor. I haven't had time to do any measuring at this point, but I imagine setting this to 2 or 3 could help prevent starvation of the connection while waiting for more data to be written by the application. |
The average request_time value of the http3 is quite higher than HTTP2's in our prodution enviroment for USA users.
In the document introduction , the response time of http3 will be more stable and lower than TCPs'. But in our real prodution enviroment(USA/AU/EU users), it is diffrent. While the avg response time of http2 is 0.037s , the avg response time of quiche(http3) is 0.549s. Is the UDP flow set low priority by most telecom providers?
version b3c73e3 + nginx patch https://github.com/cloudflare/quiche/tree/master/nginx
![图片](https://user-images.githubusercontent.com/3523160/233343092-42e8951f-9f33-4b35-ac53-c76353e44242.png)
HTTP3 is always slow
![图片](https://user-images.githubusercontent.com/3523160/233344564-0c892546-e2fe-474b-a23a-ff36cb4bd619.png)
By the way , another nginx patch I have tried which can reduce value the request avg response :
nginx-1.24.0 with threads support + patch of kn007
https://github.com/kn007/patch/blob/master/nginx_with_quic.patch
The text was updated successfully, but these errors were encountered: