Website Hosting Cost Tools

Measured request rate · user-verified worker limit

PHP worker capacity worksheet

Estimate average concurrent PHP work from a measured peak request window and mean PHP service time. Compare with your verified worker limit using an explicitly chosen planning margin.

Estimate average PHP work in progress from a measured dynamic-request rate and mean PHP service time, then compare that estimate with a worker limit you have verified. This is a steady-state planning calculation, not a load test or provider-fit verdict.

Enter observations from the same workload and calculate.

How to use the worksheet

  1. Choose a representative busy window and count dynamic PHP requests that reached the PHP application during it. Exclude static files and note whether cache layers bypassed PHP.
  2. Use application tracing or another measurement that estimates mean PHP service time across those requests. Use seconds after converting milliseconds if you calculate by hand. Do not substitute full browser page-load time, which can include network, queueing, database, and browser work.
  3. Enter the simultaneous worker limit from the exact plan or account you are evaluating. Leave the planning ceiling as your own chosen margin; it is an input, not a recommended universal percentage.

Estimated average concurrent PHP work = (requests in window ÷ window seconds) × (mean PHP service milliseconds ÷ 1,000). This uses Little's Law in a steady-state approximation: arrival rate multiplied by average time in the system estimates average work in progress. The worksheet uses PHP service time as that time and does not include time queued before a worker starts.

The planning comparison multiplies your worker limit by your chosen utilization ceiling, then translates that concurrent-work budget into a request-rate scenario using the entered mean service time. These are averages and scenarios: short bursts, uneven request durations, queueing, CPU or memory limits, database waits, background jobs, caching, and other pools can change observed behavior. A result below the entered worker limit does not prove a plan will fit or remain responsive.

Where to measure

PHP-FPM's status page can report current active and idle processes, the maximum active processes seen, listen-queue observations, and whether the configured child-process maximum was reached. It also exposes per-process request-duration information in full output. These are useful operational signals, but a single per-process duration is not a mean across your chosen observation window. Derive comparable request counts and average PHP service time from measurements covering the same workload window.

Only enable or expose an FPM status endpoint according to the server administrator's security guidance: PHP documents that it reveals request URLs and resource information and should be restricted to internal requests or known client addresses. Shared-hosting customers may not have access to FPM metrics; use provider-supported account data or ask support what the published worker limit means.

Sources

For broader user-entered capacity assumptions, see the WordPress resource needs estimator. For request timing and user experience measures, see the Core Web Vitals guide; those metrics do not isolate PHP worker capacity.

How it works

Enter dynamic PHP requests observed during a peak window, the window length, mean PHP service time, the simultaneous PHP worker limit verified for your account, and your own utilization ceiling. The worksheet applies a steady-state Little's Law estimate; it does not test a server or judge whether a plan will fit.

Good to know

What does the concurrency estimate mean?

It estimates average PHP requests being served at once as request arrival rate multiplied by mean PHP service time. It is an average steady-state approximation, not a peak burst or guaranteed capacity result.

Where do I get PHP worker measurements?

A PHP-FPM status page can show active and idle processes, listen queues, maximum active processes, whether the child limit was reached, and per-process request-duration information. A per-process duration is not an average across a workload window. Use application tracing or provider-supported measurements for comparable request counts and mean service time.

Does a result below my worker limit prove the plan is sufficient?

No. The estimate excludes queueing and does not model burst shape, CPU or memory contention, database waits, other pools, or provider-specific enforcement. Validate with measurements under your own workload and current account terms.

Impact — TODO: apply/approval and configure referral URL — referral link not configured.

CJ Affiliate — TODO: apply/approval and configure referral URL — referral link not configured.

PartnerStack — TODO: apply/approval and configure referral URL — referral link not configured.