Назад | Перейти на главную страницу

Настройка nginx и PHP5-FPM

У меня есть VPS с 1 ядром процессора, и когда я искал хорошую документацию по настройке nginx и php5-fpm, я постоянно сталкивался с такими вещами, как «У меня двухъядерный процессор, поэтому я ограничу его двумя процессами ..»

Теперь мой вопрос: поскольку у меня одно ядро, стоит ли ограничивать nginx (а также php5-fpm) одним процессом? Если я прав, это не должно быть проблемой для многопоточной архитектуры nginx?

В настоящее время сервер, похоже, работает нормально, но нагрузка очень низкая, при использовании AB из моего домашнего подключения я получаю тайм-аут после 499 подключений, но я не совсем уверен, почему он истекает (вся моя система зависла).

Проблема с чтением материалов в Интернете заключается в том, что они обычно не имеют полезного обоснования (если вам повезет), не применимы к вашей ситуации или совершенно просты. неправильно (безусловно, самый распространенный).

Если обработка вашего запроса полностью связана с процессором внутри fpm worker, то да, наличие более одного процесса на ядро ​​не улучшит пропускную способность. Однако это невероятно редкий сценарий - обычно ваш PHP-скрипт попадает в базу данных, или считывает данные из файловой системы, или устанавливает внешние соединения для получения других данных, или что-то еще. Все это время процессора, которое, если у вас есть только один рабочий fpm на ядро, будет потрачено впустую.

Какая правильная конфигурация для вашей среды - это сочетание «знай свое приложение» и экспериментов. Я бы попробовал с двумя рабочими fpm на одном ядре и посмотрел, что происходит под нагрузкой (реальная нагрузка, а не ab). Если ЦП полностью привязан, то вы, вероятно, выполняете больше работы ЦП, чем может быть обработано, и вам следует немного уменьшить его (или просто получить больше ЦП). Если вы используете максимальную пропускную способность, но ЦП все еще довольно простаивает, вы можете увеличить количество рабочих, пока ЦП не достигнет максимума.

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