﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	uname	nginx_version
2679	Low throughput with HTTP/3	marlonanjos@…		"Hi there,

I am experiencing a significant difference in throughput performance when downloading files using HTTP/3 compared to HTTP/2 on the same server. Below are the results from my tests:

**HTTP2:**
{{{
# curl -k --http2 -o /dev/null 'https://marlon-test-jnb.tempurl.host/ubuntu_100m.iso'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  100M  100  100M    0     0  87.5M      0  0:00:01  0:00:01 --:--:-- 87.5M

}}}

**HTTP/3:**
{{{
# curl -k --http3-only -o /dev/null 'https://marlon-test-jnb.tempurl.host/ubuntu_100m.iso'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  100M  100  100M    0     0  6258k      0  0:00:16  0:00:16 --:--:-- 6395k
}}}

All using the default settings. Raising http3_stream_buffer_size from the default 64k to 128k or 256k helps, but never achieve as good as HTTP/2.

I've tested with stable 1.26.1 (compiled) and also mainline 1.27.0 (from nginx.org). Also tested the download with Google Chrome and the speeds matched curl.

I've attached the error.log with debug enabled during the download and the nginx.conf.

Are there any additional parameters or configurations that I can adjust to improve HTTP/3 throughput to be on par with HTTP/2? Any guidance would be greatly appreciated.

Thank you in advance,
Marlon"	defect	new	minor		http/3	1.25.x				Linux marlon-test-jnb 5.15.0-117-generic #127-Ubuntu SMP Fri Jul 5 20:13:28 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux	"nginx/1.26.1
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-ufANOL/nginx-1.26.1=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_v3_module --with-http_gzip_static_module --with-http_perl_module --with-threads --with-file-aio --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-select_module --without-poll_module --without-http_ssi_module --without-http_userid_module --without-http_mirror_module --without-http_autoindex_module --without-http_split_clients_module --without-http_referer_module --without-http_uwsgi_module --without-http_scgi_module --without-http_grpc_module --without-http_memcached_module --without-http_empty_gif_module --without-http_browser_module --without-http_upstream_hash_module --without-http_upstream_ip_hash_module --without-http_upstream_least_conn_module --without-http_upstream_random_module --without-http_upstream_zone_module"
