количество рабочих процессов nginx

23

Я настраиваю nginx для обслуживания установки Drupal и, похоже, нахожу противоречивую информацию о настройке рабочих процессов nginx. Один сайт говорит, что вам нужно два, один говорит, что вам нужно пять, один говорит по одному на процессор ...

Как мне выбрать количество рабочих процессов nginx? Если это имеет значение, это гостевая виртуальная машина в кластере VMWare, и я выделил ей один виртуальный процессор.

ceejayoz
источник

Ответы:

16

Nginx в отличие от Apache и других процессов для каждого веб-сервера. Он использует один главный процесс для запуска и мониторинга небольшого числа рабочих процессов, которые фактически обрабатывают соединения. Я рекомендую начать с количества рабочих по умолчанию, которое составляет 1.

worker_processes  1;

Вам нужно будет только увеличить это значение, если вы обнаружите, что работник nginx тратит слишком много времени на блокировку ввода-вывода. Это не произойдет, пока он не будет обслуживать многие сотни запросов в секунду.

Вы также можете найти эти настройки полезными.

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}
Дейв Чейни
источник
1
Можете ли вы описать, для чего используется «worker_rlimit_nofile 8192»?
Pixel Developer
wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile . Это инструктирует работника увеличить свой предел.
Дэйв Чейни
15

В системах SMP должны быть запущены как минимум рабочие процессы nCPU: в четырехъядерном - четыре и т. Д. Это достаточно для прокси.

Если вы собираетесь обслуживать некоторые сайты с большим количеством статического контента, было бы лучше добавить больше рабочих - по одному на диск.

Если ваша дисковая подсистема находится в плохом состоянии или загружена слишком сильно, рабочие процессы nginx могут быть заблокированы в операциях ввода-вывода и не смогут обслуживать другие запросы. В этом случае вам следует увеличить число рабочих процессов до некоторого подходящего значения (может быть десятки) или добавить немного памяти для дискового кэша.

Посмотрите на распечатку "ps ax": рабочие, находящиеся в состоянии "D", заблокированы. Увеличивайте, пока не получите хотя бы рабочие процессы nCPU, не заблокированные.

Вадим
источник