Я только что купил новый сервер, на котором будут работать nginx, PHP, стек MySQL, который будет обслуживать полностью кэшированные html-запросы в 90% случаев, а запросы PHP / mysql в противном случае через FastCGI.
Статистика на коробке:
CentOS 5.x 64-бит
2x Intel Quad Core Xeon E5520 (8 ядер / 16 потоков)
6 ГБ DDR3 @ 800 МГц
Интересно, что некоторые профессионалы nginx обычно рекомендуют относительно количества рабочих процессов для такого сервера. Я ищу здесь оптимальную настройку, так как это строго веб-сервер - в идеале он будет обслуживать несколько тысяч запросов в секунду из кеша html и несколько сотен максимум из PHP / mysql.
Спасибо!
Использование резидентной памяти Nginx тривиально, и, насколько мне известно, за использование 8 процессов Nginx (по 1 на ядро), а не за 1, есть небольшой штраф.
Я бы запустил apache bench или другую утилиту с высоким уровнем параллелизма, запрашивая тяжелые объекты на диске. Продолжайте увеличивать AB-тесты, пока не обнаружите предел. Затем поэкспериментируйте с количеством проков Nginx, оставив все остальные тесты равными. Сообщите, чтобы мы все поумнели.
Если вы выполняете рабочую нагрузку проксирования (PHP считается рабочей нагрузкой проксирования), я бы рекомендовал только одного воркера, поскольку нет причин использовать более одного.
Единственная причина, по которой я бы рекомендовал использовать более одного воркера, - это когда вы используете nginx для интенсивного ввода-вывода статических файлов. Несмотря на то, что nginx использует асинхронную модель ввода-вывода, по-прежнему существует несколько системных вызовов, которые могут блокировать выполнение работника, чтение с диска является одним из них. В таких случаях я бы рекомендовал одного рабочего на шпиндель диска или ЦП, в зависимости от того, что меньше.
Взгляни на количество рабочих процессов nginx