Re: proxy http version 2; без SSL, для мультиплексирование запросов к бекенду

Валентин Бартенев vbart на nginx.com
Ср Май 25 16:07:48 UTC 2016


On Wednesday 25 May 2016 19:01:36 Evgeniy Berdnikov wrote:
> On Wed, May 25, 2016 at 07:19:04AM -0400, S.A.N wrote:
> > Вы правы, я наконец то понял, браузеры отправляют в одном соединении запросы
> > последовательно, всегда дожидаясь ответа на предыдущий, т.е. очередь
> > запросов в соединении нет, по этому сделать какое-то мультиплексирования не
> > выйдет, потому что сервер не сможет прочитать из сокета новые запросы пока
> > не ответит на предыдущий запрос.
> 
>  Напишу ещё раз: браузеры могут посылать пачки запросов по http/1.1,
>  это называется pipelining, но ответы в http/1.1 должны идти строго
>  в том же порядке, что и запросы.
> 

По факту ни один популярный браузер pipelining не использует, если только
специально глубоко в настройках это не включить.

Могут но не делают.


> > > и HTTP/2 тут только лишний оверхэд создает.  Подозреваю, что уже для
> > > 1000 запросов оверхэд может стать весьма заметным.
> > 
> > В спеке протокола FastCGI есть мультиплексирование, правда его ещё никто не
> > реализовал, но если HTTP/2 дает большой оверхед, возможно FastCGI будет
> > лучше, для мультиплексирования запросов Nginx к бекендам?
> 
>  Конечно, мультиплексирование в FastCGI будет легче чем в HTTP/2.
> 
>  Но само по себе мультиплексирование не является самоцелью, оно может
>  быть уместно в каких-то вычурных ситуациях (вроде исчерпания сокетов),
>  которые на самом деле разруливаются другими методами. Нужно понимать,
>  что мультиплексирование связано с дополнительным оверхедом (на буферы,
>  разбор потока и т.п.), который при отсутствии мультиплексирования
>  переносится на уровень ядра ОС. А ядро обычно решает свои проблемы
>  очень эффективно, и было бы наивно надеяться на то, что управление
>  потоком в прикладной программе будет лучше, чем в сетевом стэке.
> 

Всё так.

--
Валентин Бартенев


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