При установке php внимательные могут обнаружить, что мы также установили модуль php-fpm. Модуль fpm отвечает за обработку запроса. Соответствующие операции fpm напрямую влияют на количество запросов, на которые сервер может ответить. Правильные настройки эффективно улучшат эффективность обработки, в противном случае произойдет тайм-аут шлюза 502 или ошибка 504.
Давайте откроем файл www.conf в /etc/php/7.2/fpm/pool.d и найдем следующие параметры:
pm=dynamicpm.max_children=5pm.start_servers=2pm.min_spare_servers=1pm.max_spare_servers=3;pm.max_requests=500
Это параметры по умолчанию после того, как автор установил PHP. Я объясню их один за другим ниже:
Первый динамический указывает на то, что режим обработки процесса является динамическим, а также существует соответствующий ему статический режим.
Если для pm установлено значение staic, то действует только параметр pm.max_childern.
Если для параметра pm установлено значение «динамический», вступят в силу следующие четыре параметра. Система запустит процессы pm.start_servers php-fpm, когда php-fpm начнет работать, а затем динамически настроит количество процессов php-fpm между pm.min_spare_servers и pm.max_spare_servers в соответствии с потребностями системы.
Второй параметр pm.max_children указывает максимальное количество процессов, которые можно разветвить (запустить). Очевидно, что чем больше количество, тем больше запросов можно будет сделать одновременно. Естественно, не будет медленных соединений или. длительное время ожидания запроса, но процессор или память все равно будут доступны. Загруженность невелика. Это значение относится к количеству открытых процессов php-fpm в статическом режиме и ограничивает максимальное количество процессов php-fpm в динамическом режиме.
Третий параметр pm.start_servers указывает, что в динамическом режиме несколько процессов будут запускаться в исходном состоянии, а затем динамически корректироваться по мере необходимости, и определяется двумя параметрами pm.min_spare_servers и pm.max_spare_servers.
Четвертый параметр pm.min_spare_servers представляет минимальное количество процессов php-fpm в состоянии простоя в динамическом режиме и количество, сохраняющееся после очистки простаивающих процессов.
Пятый параметр pm.max_spare_servers представляет собой максимальное количество процессов php-fpm, находящихся в состоянии простоя в динамическом режиме, то есть, когда простаивающие процессы достигают этого значения, они очищаются.
Шестой параметр pm.max_requests указывает количество запросов перед уничтожением процесса и его перезапуском, что позволяет избежать утечек памяти.
Очевидно, что max_children здесь равно 5, чего на первых порах будет достаточно. По мере увеличения трафика его будет явно недостаточно. Давайте поговорим о конкретных настройках значения. Наиболее непосредственное влияние оказывает значение pm.max_children. Самый основной принцип. : Система памяти ЦП Если позволяют системные ресурсы, чем больше, тем лучше. Вот метод расчета. Например, скорость процесса составляет около 15–25 МБ. Тогда, когда на сервере есть память 4G, только в идеальных условиях она может составлять около 150–300. полную мощность. Затем наблюдайте за состоянием сервера и вносите коррективы.
Вообще говоря, серверы с большой памятью (например, 32, 64 ГБ и выше) могут использовать статический режим, который имеет хорошие эффекты параллелизма. Небольшие серверы с памятью могут использовать динамический режим, которым можно автоматически управлять по требованию.
Вы можете провести стресс-тестирование в соответствии со своей ситуацией и внести коррективы в соответствии с условиями вашего сервера.