multi_accept
Директива multi_accept позволяет рабочему процессу одновременно принимать несколько соединений с прослушивающего сокета. — NGINX Core
Описание
Директива `multi_accept` в NGINX используется для оптимизации процесса обработки соединений, позволяя рабочему процессу принимать несколько новых соединений одновременно, а не по одному. Когда эта директива включена, рабочий процесс может повысить пропускную способность за счёт уменьшения накладных расходов, связанных с переключением контекста, и снижения задержки при обработке отдельных соединений. Эту директиву можно установить в значение `on` или `off`. При установке в `on` она инструктирует рабочие процессы принимать столько новых соединений, сколько позволяет уровень сокетов операционной системы. Такое поведение особенно полезно в условиях высокой нагрузки, когда ожидается большое количество одновременных соединений. С другой стороны, при значении `off` поведение по умолчанию — принимать только одно соединение за раз. Это может приводить к увеличению задержки для входящих соединений, поскольку последующие подключения должны ждать, пока рабочий процесс освободится для их обработки. Важно учитывать, что включение `multi_accept` не гарантирует улучшения производительности во всех ситуациях. Выгоды в значительной степени зависят от того, как базовая операционная система обрабатывает операции с сокетами и от конкретных условий нагрузки на сервер. Администраторам серверов следует контролировать производительность, чтобы определить, приносит ли включение этой директивы ожидаемые результаты.
Пример конфига
events {
multi_accept on;
worker_connections 1024;
}Включение multi_accept может привести к увеличению использования CPU и переключений контекста, особенно при высокой нагрузке.
На некоторых системах включение этой функции может не дать улучшения производительности, если базовая OS не обрабатывает увеличенный приём соединений оптимально.