Persistent HTTP connections && Pipelining

Igor Sysoev is at rambler-co.ru
Wed Nov 14 13:48:47 MSK 2007


On Wed, Nov 14, 2007 at 12:09:31PM +0200, MZ wrote:

> В ср, 14/11/2007 в 10:12 +0300, Igor Sysoev пишет:
> > Persistent соединения с бэкендом планируются, но реализовать их на данный
> > момент сложно, так как необходимо обрабатывать chunked ответы бэкенда.
> > Большого прироста производительности ожидать от этого не стоит,
> > за исключением случаев, когда бэкенд на виндах или джаве.
> Не сказал бы что не стоит. Оверхед не только на установку и accept
> соединения (а чем больше очередь входящих соединений тем надо больше
> ресурсов на её обработку). Но и на поиск или инициализацию свободного
> воркера куда можно было бы пробросить соединение, освобождение воркера
> после отдачи контента, ... - это все тоже работа, причем большая чем
> просто установка соединения.

Это где происходит "поиск или инициализацию свободного воркера" ?
В стандартном Апаче свободный воркер сам accept()ит соединение.
О какой работе по инициализации и освобожению идёт речь ?

> > Поддержка pipelined запросов к бэкенду существенно усложнит проксирование
> > и бессмысленна на данный момент - по умолчанию pipelining использует
> > только Опера. Firefox нужно специально настраивать, а MSIE, по-моему,
> > не поддерживает вообще.
> А при чем тут использование pipeline браузером ? Мы ж pipeline к бекенду
> обсуждаем. Хотя обсуждать тут особо нечего - Anton Yuzhaninov
> <citrin at citrin.ru> привел пример, когда использование pipeline
> увеличивает задержку при неудачном стечении обстоятельств.

А при том что,
---------
В случае пайплайнинга, ngnix будет проксировать каждый реквест в новом
соединении к бекенду?
---------

> А вот если Опера присылает пачку pipelined-запросов, nginx их
> раскидывает по разным бекендам - это нормальная схема, только придется
> держать в буфере ответы на более поздные запросы, пока не уйдут в
> pipeline ответы на все предыдущие запросы - fifo. Задо задержка
> получения ответов может значительно снизиться, за счет паралельной
> генерации контента, но никогда не увеличится (разве что какой-то бекенд
> окажется перегружен, но тут надо менять текущю схему балансировки, я уже
> когда-то писал).

nginx обрабатывает pipelining последовательно. И я не вижу никакого
смысла добавлять в обработку pipelining'а искусственный интеллект -
за четыре года его существования в nginx'е его поддержка со стороны
браузеров не изменилась (та же Опера + Файрвокс, выключенный по дефолту).

А по поводу схемы балансировки по времени ответа очень хорошо сказал
на РИТе Олег Оболенский из Яндекса - "пятисотки отдаются офигенно быстро".


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list