nginxQuic: зависание соединения и сброс на HTTP/2 протокол
Roman Arutyunyan
arut на nginx.com
Пн Апр 10 10:10:21 UTC 2023
Добрый день,
On Fri, Mar 31, 2023 at 10:43:33AM +0300, izorkin на gmail.com wrote:
> Здравствуйте.
> Столкнулся с очередной ошибкой в работе с протоколом HTTP/3.
>
> В первом случае при запросе через curl соединение сбрасывается на HTTP/2 протокол:
> curl --head --http3 https://example.com/test.txt
> HTTP/2 200
> server: nginx/1.23.4
> date: Fri, 31 Mar 2023 07:24:25 GMT
> content-type: text/plain
> content-length: 5
> last-modified: Thu, 30 Mar 2023 18:51:19 GMT
> etag: "6425da27-5"
> alt-svc: h3=":443"; ma=86400
> accept-ranges: bytes
Судя по логам, curl одновременно создает оба соединения - http/2 и http/3.
Далее, в процессе QUIC-хендшейка nginx не получает ответа от curl и
перепосылает CRYPTO-фреймы. Но к этому моменту curl уже выслал запрос по
http/2. Вероятно, имеет место потеря UDP-пакетов. Попробуйте запустить curl
с логгированием (-v), может там будет что-то полезное.
> Во втором случае соединение зависает и curl начинает загружать ядро процессора на 100%.
Судя по всему, это баг в curl. Судя по логам, nginx получает запрос и
отправляет ответ. После этого curl ничего не шлет, даже подтверждения
получения пакетов. Опять же, полезно было бы посмотреть, что при этом делает
сам curl.
> Конфигурацию и логи прикрепил в архиве.
>
>
> --
> С уважением,
> Izorkin mailto:izorkin на gmail.com
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
--
Роман
Подробная информация о списке рассылки nginx-ru