Система пулов в PHP-FPM работает так: веб-сервер (например, Nginx или Apache) передаёт полученный запрос PHP-FPM, который обрабатывает его с помощью пула дочерних процессов. dev.to Эти процессы — отдельные экземпляры PHP, каждый из которых способен независимо обрабатывать отдельные запросы. dev.to
Обычно для каждого отдельного сайта используют отдельный обработчик, что позволяет распределить нагрузку и отслеживать статистику по каждому сайту. losst.pro
Есть несколько режимов работы пулов: losst.pro
- Dynamic. losst.pro habr.com Процессы создаются в зависимости от нагрузки и настроек, даже если нагрузки нет, всё равно работает определённое количество процессов. losst.pro
- Ondemand. losst.pro Процессы создаются, как только возникает нагрузка. losst.pro
- Static. losst.pro Количество процессов всегда одинаковое, указанное в настройках. losst.pro Этот режим невыгоден, так как вне зависимости от нагрузки потребляется много памяти и процессорного времени на поддержание работы процессов. losst.pro
Некоторые параметры конфигурации пулов:
- pmmaxchildren. dev.to habr.com Определяет максимальное количество дочерних процессов, которые могут быть запущены. habr.com
- pmstartservers. habr.com Указывает количество дочерних процессов, запускаемых на запуске PHP-FPM. habr.com
- pmminspare_servers. habr.com Определяет минимальное количество бездействующих дочерних процессов, которые создаёт PHP-FPM. habr.com Если доступно меньше, чем это число, то создаются другие процессы. habr.com
- pmmaxspare_servers. habr.com Определяет максимальное количество бездействующих дочерних процессов, которые создаёт PHP-FPM. habr.com Если доступно больше дочерних процессов, чем указано здесь, некоторые из них будут «убиты». habr.com
- pmprocessidle_timeout. habr.com Указывает время простоя в секундах, по истечении которого дочерний процесс будет убит. habr.com