Почему 'multi_accept' 'выключен' по умолчанию в Nginx?

17

Я обнаружил, что 'multi_accept' по умолчанию выключен в Nginx следующим образом:

multi_accept

Макс Зуефф
источник

Ответы:

13

Вероятно, потому что при включенном все рабочие процессы активны и пытаются обрабатывать все входящие запросы одновременно. Если этот параметр отключен, Nginx решает, какой дочерний процесс обрабатывает запрос один за другим. Поскольку Nginx очень эффективен в этом, это, вероятно, хорошо служит большинству людей. Некоторые считают, что его можно включить, так как это может затопить рабочие соединения запросами. Ваши настройки TCP на уровне ОС, скорее всего, тоже сыграют в этом свою роль.

JayMcTee
источник
3
У меня была точная ситуация. Я попытался выяснить, что делают автоматические команды worker_rlimit_nofile, worker_connections и worker_processes. Nginx - это обратный прокси-сервер для приложения, которое принимает веб-сокеты. Конфигурация Nginx позволяет 50 соединений для каждого работника. Когда у меня есть два рабочих (поэтому должно быть установлено 100 соединений), и multi_accept включен, я получаю ошибку, что веб-сокеты не могут быть созданы (работник, который уже имеет 50 соединений, пытается это ...). Когда multi_accept выключен, все работает отлично.
Hamburml