Методы обработки соединений 26.09.2006
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 X.
На двух-процессорных машинах под управлением MacOS X использование
kqueue может привести к kernel panic.
epoll эффективный метод, используемый
в Linux 2.6+. В некоторых дистрибутивах, например SuSE 8.2,
есть патчи для поддержки epoll ядром 2.4.
rtsig real time signals, эффективный метод,
используемый в Linux 2.2.19+.
По умолчанию в очереди может находиться не более 1024 сигналов для всей
системы. Этого недостаточно для нагруженных серверов, поэтому нужно увеличить
размер очереди с помощью параметра ядра
/proc/sys/kernel/rtsig-max.
Однако, начиная с Linux 2.6.6-mm2, этого параметра уже нет и для каждого
процесса существует отдельная очередь сигналов, размер которой
задаётся с помощью RLIMIT_SIGPENDING.
При переполнении очереди nginx сбрасывает её и начинает обрабатывать
соединения с помощью метода poll до тех пор, пока ситуация не нормализуется.
/dev/poll эффективный метод, используемый
в Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+
и Tru64 UNIX 5.1A+.
eventport event ports, эффективный метод,
используемый в Solaris 10. Во избежания kernel panic, нужно установить патч.
(C) Игорь Сысоев http://sysoev.ru |