Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk9 min

PHP Threads and Workers for a Busy WooCommerce Store: How to Size PHP-FPM Safely

WooCommerce has no universal PHP worker number. Size PHP-FPM from measured request memory and shared-resource headroom, then isolate Action Scheduler jobs so queue bursts cannot starve checkout.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

There is no universal number of PHP workers for a busy WooCommerce store. On normal PHP hosting, the setting called “PHP threads” usually means PHP-FPM child processes: each process handles one request at a time. Set the pool from measured per-request memory, reserved CPU and database capacity, then verify it with saturation, latency, slow-log and error data. Adding children helps only while those resources have headroom; beyond that, workers compete for CPU, memory, database connections and upstream services, so checkout can become slower rather than faster.

What “PHP threads” means on WooCommerce hosting

PHP-FPM (FastCGI Process Manager) is PHP’s primary FastCGI implementation for heavily loaded sites. Its pool is made of child processes, not a shared-memory thread pool in the usual operating-system sense. A child generally serves one web request at a time, so the practical capacity question is how many children can run concurrently without exhausting the server.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Hosting dashboards sometimes label this control “PHP workers” or “PHP threads.” For sizing, treat it as the PHP-FPM pool’s child limit. FPM supports static, dynamic and ondemand child-spawning modes, plus slow logs and status information. Those controls determine when children exist; they do not remove limits imposed by CPU, RAM, the database, object cache, network calls or payment and shipping APIs.

Why more workers do not automatically make checkout faster

A worker ceiling limits concurrency, but it is not a performance target. If all children are busy, new requests wait in the web-server or FPM queue. Raising the ceiling can reduce that wait when spare CPU, memory and database capacity are available. Once those resources are saturated, additional children create contention: more context switching, larger memory pressure, more simultaneous database work and longer waits on downstream services.

#1 Best Overall
A-Tech Server 32GB Kit (2x16GB) DDR4 2400MHz PC4-19200 ECC UDIMM 2Rx8 Dual Rank 1.2V ECC Unbuffered DIMM 288-Pin Server & Workstation RAM Memory Upgrade Modules (A-Tech Enterprise Series)
  • A-Tech RAM Memory compatible for select DDR4 Server and Workstation systems only; (*WILL NOT WORK with Desktop or Laptop Computers/PCs*)
  • 32GB RAM Kit (2 x 16GB Modules); DDR4 DIMM 288 Pin; Speeds up to 2400MHz PC4-19200 (PC4-2400T)
  • ECC Unbuffered UDIMM; 2Rx8 - Dual Rank x8; JEDEC DDR4 standard 1.2V
  • Improves system performance, workload capacity, and reduces bottlenecks by increasing memory (RAM) resources
  • Note: This memory is ECC Unbuffered and cannot be mixed with different ECC types such as ECC Registered, ECC Load Reduced, or Non-ECC Unbuffered; (Memory compatibility can vary among different system models and their installed components; please verify compatibility and follow memory channel guidelines to ensure maximum performance)

WooCommerce requests are not interchangeable. A cacheable product page, a logged-in account request, a cart recalculation, checkout payment confirmation and a REST callback can have very different execution times and memory footprints. A single average requests-per-second figure therefore cannot produce a reliable worker count. Measure representative requests from your own store.

A measurement-based way to size a PHP-FPM pool

1. Measure one representative child

Observe memory used by a PHP-FPM child while it handles real WooCommerce work. Include cart and checkout, logged-in account pages, administration, REST requests and payment callbacks when those paths matter to your traffic. A product-page test alone can understate the footprint of checkout and extension-heavy requests.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Record the resident memory of several children during normal traffic and during a realistic burst. Use the value that protects against the larger, representative requests rather than the smallest idle process. The goal is an empirical per-child footprint, not a number copied from a hosting plan.

Rank #2
OWC 32GB Memory RAM Kit Compatible with Synology DiskStation DS723+ DS923+
  • OWC 32GB UPGRADE: Consists of 2pcs of 16GB DDR4 2666MHz PC4-21300 CL19 2RX8 ECC SO-DIMM 1.2V 260-pin Memory Modules Compatible with Synology part numbers D4ECSO-2666-16G, D4ES01-16G
  • Compatible for Synology NAS DiskStation, RackStation, FlashStation, & NVR DVA Servers models: DS1522+, DS1618+, DS1621+, DS1621xs+, DS1819+, DS1821+, DS2419+, DS2419+II, DS2422+, DS3018xs, DS3617xs, DS3617xsII, DS3622xs+, DVA3219, DVA3221, FS1018, RS1221+, RS1221RP+, RS822+, RS822RP+
  • INCREASED PERFORMANCE: Memory Upgrades are the Most Effective and Easy Way to Boost the Performance of Your Server, Micro Server or NAS System
  • INDUSTRY LEADING: Consumer Friendly Advanced Replacement Program and Limited Lifetime Warranty, which Includes Free Tech Support by Other World Computing
  • EASY INSTALLATION: In Most Cases Installing Memory is an Easy DIY project. Watch our OWC Basic Installation Video for help.

2. Reserve resources before choosing the ceiling

Subtract the memory and CPU needed by the database, web server, operating system, object cache, monitoring and other services. Leave headroom for bursts and for database connections opened by simultaneous requests. The remaining capacity is the budget for PHP-FPM children. A pool that fits only when every other service is idle will fail during a sale or a queue spike.

CPU is a second ceiling. If the database or PHP code already keeps available cores busy, more children mainly increase run-queue time. Likewise, a pool can look healthy in memory terms while database locks, connection limits or a slow external API hold requests open and occupy every child.

3. Set a conservative pool limit

Choose a maximum child count that fits the measured memory budget and leaves CPU and database headroom. Select static, dynamic or ondemand spawning according to traffic shape and startup cost, but do not confuse the spawning mode with additional capacity. The maximum still has to be safe when all children are active.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Timetec 32GB KIT (2x16GB) DDR4 2400MHz (PC4-2400T) PC4-19200 UDIMM Desktop RAM – 288-Pin 1.2V CL17 Non-ECC Unbuffered DIMM Memory Module Upgrade
  • Capacity – 32GB RAM KIT (2 x 16GB Modules) Speed up to 2400MHz Non-ECC Unbuffered 288-Pin 1.2V UDIMM.
  • Specs – Black PCB Color and Dual Rank (2Rx8).
  • Compatibility – Designed for selected DDR4 Desktop PCs and workstations that support 288-Pin UDIMM memory. NOT compatible with Laptop SODIMM slots.
  • Installation – Plug-and-Play Upgrade, Quick and Easy to Install, no expertise required (please refer to your system's manual for guidelines).
  • Warranty – All Timetec products are high-quality and rigorously tested to meet stringent standards. Backed by Timetec Limited Lifetime Warranty and professional technical support based in the United States.

4. Watch the signals that prove whether the limit is right

  • FPM activity: active and idle children, queueing and “max children reached” events.
  • Latency: p95 and p99 for cart, checkout, account, REST and payment-callback requests, not just a site-wide average.
  • Slow requests: FPM slow-log traces that identify PHP code, plugins or external calls holding children.
  • System pressure: CPU saturation, memory pressure and swapping, database CPU and locks, connection usage and object-cache health.
  • Reliability: HTTP 5xx responses, gateway timeouts and failed payment or webhook callbacks.

Change one limit at a time, record the before-and-after window, and compare normal traffic with a sale-like burst. A lower worker count that keeps checkout latency stable and errors low is better than a larger count that merely shows more concurrent processes.

Keep customer requests separate from background work

Understand WP-Cron’s request dependency

WooCommerce’s scheduled tasks normally use WP-Cron. WP-Cron checks for due work when the site receives a request, so low traffic can delay jobs while high traffic can make repeated cron checks add load to customer requests. A real server cron can trigger WP-Cron independently of visitors, removing that timing dependency.

Visitor-triggered scheduling also couples queue execution to the same PHP capacity used by cart and checkout. During a busy period, that coupling can consume children at exactly the time interactive requests need predictable latency.

Rank #4
A-Tech 128GB Kit (8x16GB) DDR4 2133MHz PC4-17000 ECC RDIMM 2Rx4 Dual Rank 1.2V ECC Registered DIMM 288-Pin Server & Workstation RAM Memory Upgrade Modules (A-Tech Enterprise Series)
  • A-Tech RAM Memory compatible for select DDR4 Servers & Workstation systems only; (*WILL NOT WORK with Desktop Computers, Laptop Computers, or PCs of any kind*)
  • 128GB RAM Kit (8 x 16GB Modules); DDR4 DIMM 288 Pin; Speeds up to 2133MHz PC4-17000 (PC4-2133P)
  • ECC Registered RDIMM; 2Rx4 - Dual Rank x4; JEDEC DDR4 standard 1.2V
  • Improves system performance, workload capacity, and reduces bottlenecks by increasing memory (RAM) resources
  • Note: This memory is ECC Registered and cannot be mixed with different ECC types such as ECC Unbuffered, ECC Load Reduced, or Non-ECC Unbuffered; (Memory compatibility can vary among different system models and their installed components; please verify compatibility and follow memory channel guidelines to ensure maximum performance)

Know Action Scheduler’s conservative defaults

Action Scheduler is the queue used by WooCommerce and many extensions. Its documented defaults are intentionally cautious:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Setting or behavior Documented default or effect Operational meaning
Batch size 25 actions Each run claims a batch of 25 actions before another request continues the queue.
Request time Up to 30 seconds A queue request stops at the time limit and leaves remaining work for later requests.
Concurrency One concurrent batch The default favors isolation and predictable load over maximum throughput.
Stopping conditions Memory or time limits Processing continues through subsequent requests rather than requiring one request to finish the queue.

Increase batch size only when actions are short and their memory use is known. Increase concurrency only after measuring CPU, memory, database connections and downstream API headroom. The Action Scheduler performance guidance warns that more simultaneous loopback batches can substantially increase server load; careless increases can take a site down.

Use a queue runner that cannot starve checkout

For a busy store, run due actions from server cron and, where available, WP-CLI. This gives operators explicit scheduling and lets queue work run in a dedicated process, PHP-FPM pool or host. Keep interactive traffic—cart, checkout, account, REST and payment callbacks—on a pool with protected capacity.

Best Value
Sale
CORSAIR Vengeance LPX DDR4 RAM 32GB (2x16GB) Up to 3200MHz CL16-20-20-38 1.35V Intel XMP AMD EXPO Computer Memory – Black (CMK32GX4M2E3200C16)
  • Disclaimer: Maximum Speed requires overclocking/PC BIOS adjustments. Maximum speed and performance depend on system components, including motherboard and CPU
  • Hand-sorted memory chips ensure high performance with generous overclocking headroom
  • VENGEANCE LPX is optimized for wide compatibility with the latest Intel and AMD DDR4 motherboards
  • A low-profile height of just 34mm ensures that VENGEANCE LPX even fits in most small-form-factor builds
  • A solid aluminum heatspreader efficiently dissipates heat from each module so that they consistently run at high clock speeds

Long-running imports, email sends, webhooks, subscription renewals and similar jobs are especially suitable for isolation. Separation does not make an expensive action cheaper; it prevents that action and its retries from consuming the workers customers need.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Architecture choices: one pool, separate pools or a worker host

Design Isolation Throughput and latency Failure containment Operational trade-off
One shared PHP-FPM pool Background jobs can compete directly with checkout. Simplest to operate, but queue bursts can raise cart and checkout p95/p99 latency. A retry storm or slow action can consume web capacity. Lowest complexity; requires strict queue limits and close monitoring.
Separate web and queue pools Customer requests have a reserved worker budget. Queue throughput can be tuned independently while interactive latency is protected. Queue failures are less likely to exhaust checkout workers, though shared database and APIs remain common dependencies. More configuration and capacity planning; both pools still need resource headroom.
Dedicated queue process or host Strongest process-level separation from web traffic. Useful for sustained or resource-intensive queues when the database and external services can support the load. Queue retries and crashes are contained away from the web pool. Highest cost and operational complexity; requires reliable scheduling, logging and capacity management.

Evaluate each design on six questions: can background jobs starve checkout, how quickly must the pending queue drain, what happens to checkout p95/p99 during bursts, can retries consume web capacity, can operators use WP-CLI, server cron, FPM status and slow logs, and is the extra pool or host worth its cost and complexity?

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A safe tuning sequence for a busy store

  1. Establish the bottleneck. Check FPM active and idle children, max-children-reached events, slow-log traces, request latency, memory pressure, database CPU and locks, and Action Scheduler pending and failed counts. Do not raise the worker limit merely because the queue is visible.
  2. Protect interactive capacity. Reserve workers for cart, checkout, account, REST and payment callbacks. Identify imports, emails, webhooks, renewals and other scheduled actions that can move to a queue runner outside the interactive pool.
  3. Start with conservative queue behavior. Keep the documented 25-action, 30-second and one-concurrent-batch defaults while establishing a baseline. Record queue age, completed actions, failures and web latency.
  4. Move high-volume scheduling off visitors. Use a real server cron to invoke WP-Cron or a WP-CLI-based runner where available. Assign the runner to its own process or pool when background work is competing with checkout.
  5. Change one variable. Adjust either the web-pool ceiling, batch size or queue concurrency—not several at once. Verify memory, CPU, database connections, downstream API behavior and error rates before the next change.
  6. Re-measure under two conditions. Compare ordinary traffic and a sale-like burst using checkout p95/p99, FPM saturation, database load, queue age, failed actions and HTTP error rates. Keep the change only if it improves the target metric without creating a new bottleneck.

Symptoms, causes and corrective actions

Symptom Likely interpretation Next check or correction
FPM repeatedly reaches its child ceiling while CPU and memory remain comfortable Requests may be queueing at the pool limit. Inspect slow logs and request mix, then test a cautious ceiling increase while watching database and latency metrics.
Adding children raises latency and database load The prior limit was near a CPU, database or lock bottleneck. Undo the increase, profile slow requests and optimize or isolate the work instead of adding more concurrency.
Checkout slows when scheduled actions run Background jobs are consuming shared children or shared database capacity. Reserve interactive workers and move queue execution to server cron, WP-CLI or a separate pool.
Scheduled work is late on a low-traffic store WP-Cron is waiting for visitor requests. Use a real server cron so due work is triggered independently of visitors.
Queue retries coincide with 5xx errors or timeouts Long or failing actions are occupying web capacity. Inspect failed-action details and slow logs, cap concurrency, and isolate the queue runner.
Memory pressure or swapping appears after a concurrency increase Per-child memory multiplied by active children exceeds the safe budget. Reduce the pool or queue concurrency, identify high-footprint actions and restore headroom before retesting.

What documented Action Scheduler scale does—and does not—tell you

The project documentation reports that Action Scheduler processes millions of subscription payments, WooCommerce webhooks, emails and other events each month. It has also been seen on live sites processing queues exceeding 50,000 jobs and resource-intensive workloads at more than 10,000 actions per hour in 10 concurrent queues.

Those figures demonstrate that the queue system can operate at substantial scale; they are reported capabilities, not a guaranteed rate for every store. Your achievable throughput depends on action duration, memory, database performance, lock contention, PHP-FPM limits and the speed and reliability of downstream services. Treat the figures as context for architecture discussions, never as a target to enable blindly.

How to decide whether you need more workers

  • If requests queue but the rest of the stack has headroom: test a modest increase and verify that checkout latency improves.
  • If CPU, memory or database resources are saturated: adding workers will not create capacity; reduce expensive work, optimize queries or add appropriate infrastructure.
  • If only background queues are overloaded: increase queue throughput independently, preferably through server cron, WP-CLI or an isolated pool.
  • If checkout is acceptable but queue age is growing: decide how quickly jobs truly need to drain before accepting the cost of more concurrency.
  • If failures are concentrated in one extension or action type: investigate that action and its retries rather than raising every pool limit.

The correct worker count is the highest measured concurrency that preserves the store’s latency, error-rate and resource budgets during expected peaks. It may change after a plugin, PHP version, theme, payment integration, database schema or traffic pattern changes, so repeat the measurement when those conditions change.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.