ANAYIL GROUPHosting · My Domains Submit a Ticket
Help center
HomeWeb Performance Optimisation (WPO)[WPO-016] Diagnose a saturated PHP-FPM queue
Web Performance Optimisation (WPO)7 min•Difficulty: Avanzado

[WPO-016] Diagnose a saturated PHP-FPM queue

Read busy workers and queue depth before increasing concurrency or memory.

Ingeniería de Rendimiento AnayilUpdated: 2026-10-10

Apply this guide to your situation

This answer covers “[WPO-016] Diagnose a saturated PHP-FPM queue”. Read it with the summary and confirm that the symptom and service match what you are experiencing. Available options can vary by plan and account setup.

  • Before changing anything, note what you expected, what happened and roughly when. Check whether the issue affects one page or the whole service.
  • Save the full error message and note recent changes. Hide passwords, access codes, personal data and keys before sharing screenshots or logs.
  • If a step requires administrator access, restarting services or editing server files, stop if you do not administer that server. Send support the service name, error and checks you have already made.

L3 technical diagnosis

Performance / configurationSeverity: Medium; high if conversion or availability is affected

User symptoms

PHP pages respond slowly during peaks even though the web server accepts connections.

Observed code or message

`server reached pm.max_children`; upstream timeout or HTTP 502/504

Likely root cause

Slow requests, low `pm.max_children`, locks or insufficient memory keep workers busy and build a queue. Increasing workers without calculating RSS can trigger OOM and worsen the incident.

Likely-cause and resolution matrix

Follow a branch only when evidence supports it. A symptom may have more than one cause; do not change layers by guesswork.

01Professional English translation pending.

Why it can happen: Professional English translation pending.

How to diagnose (read-only):
bash
Professional English translation pending.

Step-by-step resolution:
Professional English translation pending.

02Professional English translation pending.

Why it can happen: Professional English translation pending.

How to diagnose (read-only):
bash
Professional English translation pending.

Step-by-step resolution:
Professional English translation pending.

03Professional English translation pending.

Why it can happen: Professional English translation pending.

How to diagnose (read-only):
bash
Professional English translation pending.

Step-by-step resolution:
Professional English translation pending.

04Professional English translation pending.

Why it can happen: Professional English translation pending.

How to diagnose (read-only):
bash
Professional English translation pending.

Step-by-step resolution:
Professional English translation pending.

05Professional English translation pending.

Why it can happen: Professional English translation pending.

How to diagnose (read-only):
bash
Professional English translation pending.

Step-by-step resolution:
Professional English translation pending.

Prerequisites

  • Authorised access to the affected site, repository or service metrics.
  • A reproducible URL and timestamp; use staging for infrastructure changes.
  • A backup or rollback method for configuration and deployments.

Important warnings

  • Inspection commands do not authorise production changes. Do not run load tests or global purges without an approved plan.
  • Never store private responses in shared caches. Server changes in Anayil Panel depend on the controls available for the service and may require its administrator/provider.

Step-by-step walkthrough

1. Reproduce and narrow the issue

PHP pages respond slowly during peaks even though the web server accepts connections. Correlate pool status, slowlog, per-process memory and upstream errors during peak periods. Restrict the status endpoint to localhost/administrators.
bash
ps -o rss= -C php-fpm | awk '{s+=$1;n++} END {if(n) printf "workers=%d avg_rss_kb=%.0f\n",n,s/n}'
# Process names vary by distribution/version.
Expected output:
`server reached pm.max_children`; upstream timeout or HTTP 502/504

2. Apply the appropriate correction

First find slow requests, external calls or database locks; fix that cause before resizing. The administrator sizes workers against available memory with headroom for the OS and other services, changes one parameter at a time and performs a controlled reload.

3. Verify the experience

Under representative traffic, confirm the queue falls, OOMs/restarts do not grow and latency percentiles improve without exceeding memory.
Expected output:
The improvement is reproducible on the affected route and profile with no new functional errors.

Troubleshooting & Solutions

`server reached pm.max_children`; upstream timeout or HTTP 502/504

Root cause: Slow requests, low `pm.max_children`, locks or insufficient memory keep workers busy and build a queue. Increasing workers without calculating RSS can trigger OOM and worsen the incident.

Resolution: First find slow requests, external calls or database locks; fix that cause before resizing. The administrator sizes workers against available memory with headroom for the OS and other services, changes one parameter at a time and performs a controlled reload.

Rollback and recovery plan

Roll back only the changed directive, dependency or release using the recorded value. If 5xx errors, data exposure or session failures occur, have the operator disable the new rule and retain redacted logs for analysis.

Related runbooks in this category:

Was this technical guide helpful?

Facing a production outage?

Hosting Anayil system administrators can directly intervene on your server infrastructure.

Open Support Ticket at Hosting Anayil