kqueue_events

Директива kqueue_events настраивает NGINX на использование механизма уведомлений о событиях kqueue в системах BSD для эффективной обработки событий. — NGINX Core

kqueue_events
events
Синтаксисkqueue_events;
По умолчаниюnone
Контекстevents
МодульNGINX Core
Аргументы1

Описание

Директива kqueue_events специально предназначена для использования в контексте events конфигурации NGINX. Она указывает NGINX использовать механизм уведомлений о событиях kqueue, который очень эффективен и особенно подходит для обработки большого количества одновременных соединений на ОС, совместимых с BSD, таких как FreeBSD и macOS. Благодаря использованию kqueue, NGINX может активно отслеживать несколько file descriptors, уменьшая нагрузку на CPU, связанную с polling, и обеспечивая более масштабируемую производительность под нагрузкой. Когда директива kqueue_events включена, это влияет на то, как worker processes обрабатывают события, позволяя им пробуждать простаивающие соединения только при наличии реального события, например при поступлении данных или закрытии соединения. Это контрастирует со старыми механизмами обработки событий, которые могли требовать периодического опроса, что при росте числа соединений приводит к расходованию ресурсов. Важно убедиться, что ваша установка NGINX скомпилирована с поддержкой kqueue, поскольку эта директива не будет работать, если базовая OS или build не поддерживают kqueue. Эта директива принимает один аргумент, который служит для переключения использования kqueue. При правильной настройке преимущества включают более низкое потребление ресурсов и повышенную скорость за счёт более быстрой обработки событий. Необходимо протестировать конфигурацию в тестовой среде, чтобы убедиться, что она работает как ожидалось и не вводит непредвиденных проблем.

Пример конфига

events {
    kqueue_events;
}

Убедитесь, что NGINX собран с поддержкой kqueue; в противном случае директива не будет иметь никакого эффекта.

Использование kqueue оптимально только для систем BSD; применение этой директивы на неподдерживаемых платформах может привести к ошибкам.