PHP-FPM & performance

How BOA sizes and tunes the PHP execution tier in production: the box-wide RAM budget, per-pool worker and memory_limit policy (master wwwNN vs plan-based tenant pools), the opcache/APCu shares, the Valkey/Redis cache stack, and the cron/cache failure modes that show up as intermittent plugin errors.

Two pool families exist on every host — CPU-sized master pools and plan-sized tenant pools — and all pools run ondemand, so an idle version pool consumes near-zero regardless of its pm.max_children ceiling. Capacity is governed by _php_budget_for_ram (RAM ladder), _satellite_tune_fpm_config (tenant pools) and _tune_web_server_config (master pools), with a set of _PHP_FPM_* override knobs that pin any computed value.

In this topic

  • FPM capacity sizing — the _USE/_USE_FPM RAM ladder, master vs tenant pool sizing, the shared/dedicated plan model, the dynamic pm.max_children formula, and the _PHP_FPM_MAX_CHILDREN_FORCE / _PHP_FPM_MEMORY_LIMIT_FORCE / _PHP_FPM_RAM_PCT / _PHP_FPM_CPU_FACTOR override knobs.
  • opcache & APCu — the _USE_OPC / _USE_APC shares, the phpNN.ini APCu settings (igbinary, apc.ttl=3600), the Valkey/Redis cache-instance config, and the read-only fpm_tune + fpmreport samplers.
  • Cache & cron tuning — diagnosing chainedfast failure modes: Valkey starvation, CLI-drush cache poisoning, HDD autoloader timeouts, and the graceful all-versions APCu-flush sentinel.

Related