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