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_FPMRAM ladder, master vs tenant pool sizing, the shared/dedicated plan model, the dynamicpm.max_childrenformula, and the_PHP_FPM_MAX_CHILDREN_FORCE/_PHP_FPM_MEMORY_LIMIT_FORCE/_PHP_FPM_RAM_PCT/_PHP_FPM_CPU_FACTORoverride knobs. - opcache & APCu — the
_USE_OPC/_USE_APCshares, thephpNN.iniAPCu settings (igbinary,apc.ttl=3600), the Valkey/Redis cache-instance config, and the read-onlyfpm_tune+fpmreportsamplers. - 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
- Host control files & INI reference —
_RESERVED_RAM,_PHP_FPM_DENY, INI precedence. - Database (MySQL/Percona) — the database tier on the same hosts.
- Self-healing monitor stack —
minute.shcadence that launchesfpm_tune.shand the FPM reload sentinel handler. - Reference appendix — consolidated
_PHP_FPM_*/_USE_*variable table.