> Если сокет "простаивает без трафика", то железо отнюдь не простаивает,
> а выполняет работу по тем сокетам, которые не простаивают.
> 
> К тому же при однородной нагрузке количество требуемых содинений с
> бэкэндами должно быть стабильно во времени

Если 30 запросов отправить в 30 разных соединениях, тогда конечно EventLoop
будет все 30 обрабатывать, но тратить на один запрос целое соединения это
слишком расточительно, попробую объяснить на цифрах.

1 запрос выполняется за 100ms

Если послать 30 последовательных запросов в 1 соединение мы получим 30
ответов за 3000ms
Если послать 30 запросов в 30 разных соединениях мы получим 30 ответов за
100ms
Если послать 30 асинхронных запросов в 1 соединение мы получим 30 ответов за
100ms

В первом варианте, 1 сокет находится в режиме busy ~3000ms
В втором варианте, 30 сокетов находится в режиме busy ~100ms
В третьем варианте, 1 сокет находится в режиме busy ~100ms

Вопрос какой из трех вариантов более эффективно использует ресурсы?

Если HTPP/2 создает оверхед, ок, есть мультиплексирование в FastCGI, но я
так понял что проблема не в протоколах, проблема в том что логика upstrem в
Nginx ничего не знает про мультиплексирование запросов и заточена на новые
соединения.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,266693,267225#msg-267225

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить