У меня есть 8-ядерный веб-сервер с оперативной памятью 31 ГБ с текущей нагрузкой 3 КБ в минуту.
В настоящее время параметр worker_processes в конфигурации nginx равен 4, что, как я понимаю, означает, что будут использоваться только 4 ядра. Но когда я смотрю на производительность процессора, я вижу, что все 8 ядер имеют одинаковую нагрузку. Зачем?
Более того, установка этого значения 8 поможет в моем случае?
В некоторых других программах используется процессор, например, в PHP? Вставьте весь верхний вывод, не только ваш процессор, но и программы. Включите также видимость тем ... (клавиша H, если я правильно помню.)
Значение worker_processes
является не эквивалентно количеству используемых ядер ЦП. Как следует из названия, он контролирует только количество отдельные экземпляры процесса nginx что будет работать. Любой из этих экземпляров будет порождать несколько потоков для обработки входящих запросов, и эти потоки будут выполняться на всех доступных ядрах, даже если вы решите использовать только один рабочий процесс.
Что касается того, почему один рабочий процесс на процессор предпочтительнее, например, только один - не знаю. Кто-то со знанием внутренней работы nginx использует потоки, должен пролить свет на это.
PS. Мне интересно, почему нагрузка на ваш сервер такая высокая - у нас есть небольшой 2-ядерный сервер, который обрабатывает до 200 запросов в секунду без какой-либо нагрузки.
Из документация:
Оптимальное значение зависит от многих факторов, включая (но не ограничиваясь) количество ядер ЦП, количество жестких дисков которые хранят данные и загружают шаблон. Если есть сомнения, хорошим началом будет установка количества доступных ядер ЦП. (значение «авто» попытается определить его автоматически).
Так что, по сути, установка количества процессоров - хорошая идея. Но если у вас проблемы с задержкой на диске, уменьшите значение.