accept_mutex

Директива `accept_mutex` управляет использованием механизма взаимного исключения при принятии новых соединений. — NGINX Core

accept_mutex
events
Синтаксисaccept_mutex on | off;
По умолчаниюoff
Контекстevents
МодульNGINX Core
Аргументыflag

Описание

Директива `accept_mutex` в NGINX используется для улучшения производительности событийных серверов за счёт управления тем, как рабочие процессы обрабатывают входящие соединения при высокой нагрузке на сервер. Когда она установлена в `on`, директива позволяет только одному рабочему процессу принимать новое соединение за раз, что снижает конкуренцию за ресурсы и повышает эффективность их использования. Это особенно полезно в ситуациях, когда количество одновременных соединений превышает вычислительную способность отдельных рабочих процессов, поскольку помогает предотвратить эффект «thundering herd», когда несколько процессов одновременно пытаются принять новые соединения. Директива `accept_mutex` опирается на параметр `accept_mutex_delay`, который задаёт задержку (в миллисекундах), в течение которой рабочий процесс должен ждать, прежде чем попытаться принять новое соединение, если доступны другие рабочие процессы. При правильной настройке эта задержка обеспечивает синхронизацию между рабочими процессами, уменьшая вероятность перегрузки доступных ресурсов. Синхронизация достигается за счёт того, что одному рабочему предоставляется «право» принять новое входящее соединение, в то время как другие ждут своей очереди. Оптимальная конфигурация может значительно варьироваться в зависимости от нагрузки на сервер и базовой инфраструктуры.

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

events {
    accept_mutex on;
    accept_mutex_delay 500;
}

Установка `accept_mutex` в значение `on` может привести к увеличению задержки при принятии соединений под высокой нагрузкой; этот параметр лучше использовать в сценариях тестирования и настройки.

Убедитесь, что `accept_mutex_delay` настроен правильно; слишком большая задержка может снизить отзывчивость.