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