Пул в PHP‑FPM (PHP FastCGI Process Manager) — это группа рабочих процессов PHP, объединённых общими настройками и управляемых как единое целое. В сравнении с mod_php имеет несколько ключевых особенностей, что делает его одним из предпочитаемых решений для разработчиков.
Например, он более гибок в настройке, однако в случае использования дефолтной конфигурации диспетчера получить максимум от его возможностей вряд ли получится. Тем не менее, в ряде случаев именно этот режим работы PHР позволяет решить ряд насущных вопросов.
Что делает пул
PHP‑FPM обрабатывает запросы через рабочие процессы.
Пул:
- группирует эти процессы;
- задаёт для них единый набор параметров;
- позволяет изолировать разные приложения друг от друга.
По умолчанию после установки PHP‑FPM есть один пул с именем www.
Способен использовать один из трех режимов управления процессами:
- static;
- dynamic;
- ondemand.
В режиме static удается обработать пользовательские запросы по фиксированному количеству дочерних процессов. Устанавливается режим с помощью pm.max_children. Данный режим запросов избавляет от необходимости выждать запуск новых процессов, отсюда статик - самый быстрый режим в PHP-FPM.
В dynamic число дочерних процессов регулируется уже динамически, есть гарантия постоянной доступности хотя бы одного из этих процессов. А вот в режиме ondemand происходит форм процессов при получении запросов. Для этого в режиме dynamic устанавливается pm и предоставляется значение для настроек max_children, process_idle_timeout, max_requests.
Зачем нужны несколько пулов
Использование отдельных пулов для разных проектов даёт важные преимущества: каждый пул может работать от имени своего пользователя системы. Если злоумышленник взломает один сайт, он не получит доступ к другим проектам на сервере.
Раздельные настройки. Для каждого пула можно задать:
- свои лимиты памяти;
- отдельные значения php.ini;
- разное количество рабочих процессов;
- индивидуальные настройки логирования.
Оптимизация нагрузки. Для высоконагруженных сайтов выделяют отдельные пулы с расширенными ресурсами, а для малопосещаемых — более скромные.
Гибкость окружения. Можно запустить:
- production‑версию сайта в одном пуле;
- development‑версию — в другом, с включёнными отладочными модулями.
Как работают пулы
Каждый пул:
- слушает отдельный порт или UNIX‑сокет;
- управляет своими рабочими процессами независимо от других пулов;
- получает запросы от веб‑сервера (например, NGINX или Apache), который направляет их в нужный пул по правилам конфигурации.
Ключевые параметры настройки пула
В конфигурационных файлах (обычно в /etc/php/*/fpm/pool.d/) для каждого пула задают:
- user и group — пользователь и группа ОС, от имени которых работают процессы пула;
- listen — адрес сокета или порта для приёма запросов;
- pm (Process Manager) — режим управления процессами (static, dynamic или ondemand);
pm.max_children— максимальное число одновременно работающих процессов;pm.start_servers— сколько процессов запустить при старте PHP‑FPM;pm.min_spare_serversиpm.max_spare_servers— диапазон простаивающих процессов для быстрого отклика на нагрузку;pm.max_requests— после скольких запросов процесс перезапускается (помогает бороться с утечками памяти).
Самый главный вопрос - какую конфигурацию выбрать именно вам?
Как выбрать конфигурацию
Ответ простой - смотреть нужно каждый отдельный случай. Подходящая конфигурация в каждом отдельном случае будет разной, поскольку сильно зависит от типа запускаемого приложения. Но есть некоторые базовые правила, учитываемые при выборе той самой конфигурации, способной решить если не все, то большую часть задач.
Для сайтов с небольшой посещаемостью
Если у вас небольшой личный блог, сайт, который только запустился, и на нем особо нет трафика, а вдобавок к этому используется бэкендская панель управления по типу cPanel, то верным решением будет использовать ondemand. Что это даст? Как минимум вы сможете выиграть в экономии памяти, ведь все дочерние процессы в таком режиме будут генерироваться только при необходимости, а завершаться - когда необходимости в них больше нет.
Для сайтов с высокой посещаемостью
А вот для сайтов с уже высокой посещаемостью лучше выбрать static, что позволит вам также установить наиболее релевантные настройки с учетом потребностей и аппаратных ресурсов, которые есть в наличии.