Pull to refresh

Nginx получит полноценную поддержку HTTP/1.1 Keep-Alive соединений с бэк-эндами

Reading time2 min
Views5.9K
На прошлой неделе Максим Дунин разместил в англоязычном списке рассылки разработчиков Nginx сообщение с просьбой потестировать патч, добавляющий полноценную (включая chunked-ответы) поддержку Keep-Alive соединений (при использовании upstream keepalive модуля) с http, fastcgi и memcached бэк-энд серверами.

Во избежание кривотолков, напомню, что Nginx обладает прекрасной поддержкой протокола HTTP 1.1 и Keep-Alive соединений с клиентами. Однако, постоянные соединения с http бэк-эндами не поддерживаются. На то были свои причины.

Среди преимуществ, которые можно получить от ожидаемого нововведения:
  • Меньшее число системных вызовов на запрос, что может добавить вам производительности, особенно в случаях, когда расходы на установку соединения соизмеримы со скоростью ответа (быстрый бэк-энд или высокие задержки на канале); [1]
  • Меньше риска исчерпать лимит короткоживущих портов на высоконагруженных серверах-балансировщиках. Нет необходимости понижать TIME_WAIT интервал для более быстрого их освобождения; [2]
  • Вероятно, также выиграют пользователи FreeBSD, задействующие Unix-сокеты при высокой нагрузке на файловую систему, похоже, ввиду наличия в ядре общего разделяемого ресурса для этих подсистем. [3]
Предлагаемый патч для Nginx версий 1.0.5 и 1.1.0 носит экспериментальный характер и проходит базовые тесты. Автор призывает всех принять участие в более плотном тестировании. Как уже сообщил Игорь Сысоев, в будущем ожидается, что код будет добавлен в один из релизов 1.1.x ветки, активно разрабатываемой в настоящий момент.

Всех заинтересовавшихся прошу проследовать по ссылке за подробными инструкциями:
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 соединений. Не переоценивайте возможности вашего бэк-энда.
Tags:
Hubs:
+59
Comments22

Articles

Change theme settings