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