На прошлой неделе Максим Дунин разместил в англоязычном списке рассылки разработчиков Nginx сообщение с просьбой потестировать патч, добавляющий полноценную (включая chunked-ответы) поддержку Keep-Alive соединений (при использовании upstream keepalive модуля) с http, fastcgi и memcached бэк-энд серверами.
Во избежание кривотолков, напомню, что Nginx обладает прекрасной поддержкой протокола HTTP 1.1 и Keep-Alive соединений с клиентами. Однако, постоянные соединения с http бэк-эндами не поддерживаются. На то были свои причины.
Среди преимуществ, которые можно получить от ожидаемого нововведения:
Всех заинтересовавшихся прошу проследовать по ссылке за подробными инструкциями:
mailman.nginx.org/pipermail/nginx-ru/2011-August/042069.html
Последнюю версию патча можно взять тут: nginx.org/patches/patch-nginx-keepalive-full-2.txt
p. s. Не увлекайтесь числом keepalive в директиве upstream, оно умножается на количество рабочих процессов. Так, если у вас директива worker_processes установлена в 4, а в keepalive установить 10, то вы получите до 4*10 == 40 keep-alive соединений. Не переоценивайте возможности вашего бэк-энда.
Во избежание кривотолков, напомню, что Nginx обладает прекрасной поддержкой протокола HTTP 1.1 и Keep-Alive соединений с клиентами. Однако, постоянные соединения с http бэк-эндами не поддерживаются. На то были свои причины.
Среди преимуществ, которые можно получить от ожидаемого нововведения:
- Меньшее число системных вызовов на запрос, что может добавить вам производительности, особенно в случаях, когда расходы на установку соединения соизмеримы со скоростью ответа (быстрый бэк-энд или высокие задержки на канале); [1]
- Меньше риска исчерпать лимит короткоживущих портов на высоконагруженных серверах-балансировщиках. Нет необходимости понижать TIME_WAIT интервал для более быстрого их освобождения; [2]
- Вероятно, также выиграют пользователи FreeBSD, задействующие Unix-сокеты при высокой нагрузке на файловую систему, похоже, ввиду наличия в ядре общего разделяемого ресурса для этих подсистем. [3]
Всех заинтересовавшихся прошу проследовать по ссылке за подробными инструкциями:
mailman.nginx.org/pipermail/nginx-ru/2011-August/042069.html
Последнюю версию патча можно взять тут: nginx.org/patches/patch-nginx-keepalive-full-2.txt
p. s. Не увлекайтесь числом keepalive в директиве upstream, оно умножается на количество рабочих процессов. Так, если у вас директива worker_processes установлена в 4, а в keepalive установить 10, то вы получите до 4*10 == 40 keep-alive соединений. Не переоценивайте возможности вашего бэк-энда.