PHP
#wordpress#php-fpm#pool#pm#production#performance#cpu

WordPress: PHP-FPM pool (pm dynamic) — без перегруза CPU

Настройка пула www в PHP-FPM для WordPress: pm = dynamic, max_children по RAM, max_requests. Файл pool.d/www.conf, проверка потребления памяти.

Как использовать

  1. Файл: /etc/php/8.2/fpm/pool.d/www.conf. Подставьте блок [php-fpm pool] и перезапустите php8.2-fpm.
  2. max_children ориентируйте по RAM: примерно RAM / 60MB на процесс.
  3. Проверка памяти: ps --no-headers -o rss,cmd -C php-fpm8.2 | awk '{sum+=$1} END {print sum/1024 " MB"}'

При малом числе воркеров PHP-FPM под нагрузкой создаёт очереди; при избытке — CPU и память перегружаются. Для WordPress на VPS обычно используют pm = dynamic и считают max_children по доступной RAM.

Блок для pool.d/www.conf

Файл: /etc/php/8.2/fpm/pool.d/www.conf.

pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 500
  • pm = dynamic — число воркеров меняется в заданных пределах. Не используйте ondemand на проде под нагрузку — задержки при старте процессов.
  • max_children — максимум одновременных процессов. Ориентир: RAM / 60MB (например, 2 GB → около 30).
  • pm.max_requests — после скольких запросов воркер перезапускается; снижает риск утечек памяти. 500–1000 нормально для WordPress.

Проверка потребления памяти

ps --no-headers -o "rss,cmd" -C php-fpm8.2 | awk '{ sum+=$1 } END { print sum/1024 " MB" }'

Подробнее: WordPress: ускоряем Nginx + PHP-FPM до TTFB меньше 300 мс.