Re: nginxQuic: скорость загрузки при активации kTLS

izorkin на gmail.com izorkin на gmail.com
Сб Янв 6 19:47:16 UTC 2024


Добрый вечер, Максим.

Теперь ясно, благодарю :)

Вы писали 6 января 2024 г., 21:27:52:

> Просадка производительности, которую вы наблюдаете для HTTP/2 при 
> включённом kTLS - не собственно из-за kTLS, а из-за того, что у 
> вас включён sendfile, и при включённом kTLS становится возможным 
> его использование.  А в случае HTTP/2 это выливается в большое 
> количество syscall'ов из-за HTTP/2-фрейминга.

> Если очень хочется получить включённый sendfile и kTLS в случае 
> HTTP/1.x, и выключенный в случае HTTP/2, то можно сделать как-то 
> так (слегка адаптировано из 
> https://mailman.nginx.org/pipermail/nginx-devel/2022-September/NSHDCLL2TY3Q536CO5MAKXSC3HCIMUNF.html):

>     server {
>         listen 443 ssl;

>         http2 on;

>         location / {
>             if ($server_protocol != 'HTTP/2.0') {
>                 rewrite ^(.*) /sendfile$1 last;
>             }

>             sendfile off;
>         }

>         location /sendfile/ {
>             alias html/;
>             sendfile on;
>         }
>     }

Да, были предположения после тестов, что для статики лучше делать
отдельный домен и активировать на нём HTTP/1.1 и kTLS. Но такой
вариант сработает только с теми web-сервисами, которые позволяют
выводить статику в отдельный домен.
К примеру, есть сервис Peertube для видео-хостинга. У него сложная
конфигурация nginx, и такой вариант конфигурации применить сложно,
спокойно можно что-то упустить, особенно пользователю, который
глубоко не разбирается в Nginx. Видеоплатформа позволяет выводить
статику в отдельные домен, но только с использованием S3 хранилища.
Получается, что для Peertube, лучшим вариантом будет отключить
протокол HTTP/2, активировать кTLS и использовать только протоколы
HTTP/1.1 и HTTP/3.

> Но смысла в этом не очень много, так как при включённом HTTP/2 
> рассчитывать на клиентов, которые придут по HTTP/1.x, не имеет 
> особого смысла, таких клиентов будет исчезающе мало.  Если хочется 
> получить высокую производительность при скачивании больших файлов, 
> и при этом использовать HTTP/2 (и/или HTTP/3), то имеет смысл 
> заводить отдельный виртуальный сервер, в котором разрешать только 
> HTTP/1.x (а также sendfile и kTLS), и раздавать файлы с него.

> Для HTTP/3 не работают ни kTLS, ни sendfile, соответственно 
> влияния на производительность HTTP/3 от включения kTLS не будет.


-- 
С уважением,
 Izorkin                          mailto:izorkin на gmail.com


Подробная информация о списке рассылки nginx-ru