Skip to content

Performance · August 16, 2026

PHP-FPM settings that actually move the needle

Default PHP-FPM pools are conservative. On a busy WordPress or Laravel site they become the bottleneck long before CPU is fully used. A few settings, changed carefully, often produce a visible improvement. The ones that matter most pm and pm.max_children: Too low and requests que…

PHP-FPM settings that actually move the needle

Default PHP-FPM pools are conservative. On a busy WordPress or Laravel site they become the bottleneck long before CPU is fully used. A few settings, changed carefully, often produce a visible improvement.

The ones that matter most

  • pm and pm.max_children: Too low and requests queue; too high and you swap or OOM. Size from available RAM and average process size, not from a generic blog post.
  • pm.max_requests: Recycling workers prevents slow memory leaks from becoming an outage.
  • OPcache memory and interned strings: Under-sized OPcache shows up as repeated compilation work. This is still one of the highest-leverage changes on PHP sites.
  • Request timeouts: Align with the real needs of the application so long-running admin tasks do not pile up behind public traffic.

How to change them safely

Measure first (slow log, status page, or APM). Change one variable at a time. Watch memory and error rates after each change. On shared hosting many of these are controlled by the host; on a VPS they are yours.

Tuning PHP-FPM does not replace caching, a clean database, or a sensible plugin list. It removes an artificial ceiling so the rest of the stack can do its job.


Pass it on

Share this article

Send it to the person who still thinks the intro price is the product.

Be the first to weigh in.

The desk is listening

Leave a note

Share your thoughts on this article and don't forget to use our share tool above.