MageSentinel

WooCommerce under load: when the host runs out of PHP workers

Page caching lets a WooCommerce store serve product pages to a crowd. The checkout is different. Every step — cart update, shipping calculation, payment — runs PHP for that one customer, and there is a fixed number of workers to do it.

All posts1 min read

A server rack lit in green

What a PHP worker is

A worker handles one uncached request at a time. Managed WordPress hosts sell plans with a set number of them. While all workers are busy, new requests wait in a queue; if they wait too long, they time out with a 502 or 504.

Busy workers are not only customers. Admin sessions, background jobs, bots crawling filtered URLs and slow calls to outside APIs all hold a worker while they run.

Why checkout feels it first

Browsing keeps working, because product pages come from cache. Checkout cannot, so it is the first thing to slow down and the first to fail — at the exact moment traffic is highest.

A slow shipping or payment API makes it worse: every checkout holds its worker longer, the queue grows, and a promotion email can turn into a store that loads but will not take orders.

Preparing for it

Ask your host how many workers you have and what happens when they are all busy. Block or rate-limit bots on cart and filter URLs, and keep slow tasks out of the request path.

Before a campaign, test checkout while the site is busy, not only when it is quiet. During it, a checkout check every few minutes tells you when “slow” has become “failing”. Related: cart fragments and Action Scheduler.

Check your own store now with the free WooCommerce checkout checker: it walks the checkout in a real browser and shows the step where it stops.

Common questions

What is a PHP worker?

A process that handles one uncached PHP request at a time. Cart, checkout and AJAX requests cannot be cached, so they all need a worker.

How do I know the store ran out of PHP workers?

Checkout requests queue and time out with 502 or 504 errors while cached pages still load; hosting panels often show worker or entry-process limits being hit.

How do I prepare WooCommerce for a sale?

Raise the worker limit, reduce uncached AJAX such as cart fragments, block bots, and test the checkout under load before the sale.