Методы обработки соединений
nginx поддерживает различные методы обработки соединений. Наличие того или иного метода зависит от используемой платформы. Если на платформе доступно сразу несколько методов, nginx обычно сам выбирает наиболее эффективный метод. Однако при необходимости можно явно выбрать метод обработки соединений с помощью директивы use.
Поддерживаются следующие методы обработки соединений:
-
select
— стандартный метод. Модуль для поддержки этого метода собирается автоматически, если на платформе не обнаружено более эффективного метода. Можно принудительно разрешить или запретить сборку этого модуля с помощью параметров--with-select_module
и--without-select_module
. -
poll
— стандартный метод. Модуль для поддержки этого метода собирается автоматически, если на платформе не обнаружено более эффективного метода. Можно принудительно разрешить или запретить сборку этого модуля с помощью параметров--with-poll_module
и--without-poll_module
. -
kqueue
— эффективный метод, используемый во FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 и macOS. -
epoll
— эффективный метод, используемый в Linux 2.6+.Флаги
EPOLLRDHUP
(Linux 2.6.17, glibc 2.8) иEPOLLEXCLUSIVE
(Linux 4.5, glibc 2.24) поддерживаются начиная с 1.11.3.В некоторых старых дистрибутивах, например SuSE 8.2, есть патчи для поддержки epoll ядром 2.4.
-
/dev/poll
— эффективный метод, используемый в Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ и Tru64 UNIX 5.1A+. -
eventport
— event ports, метод, используемый в Solaris 10+ (из-за имеющихся проблем вместо него рекомендуется использовать метод/dev/poll
).