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