Skip to main content
Softlimes Home
Softlimes
← Back to all articles•Hosting•7 min read

Redis Object Caching, PHP-FPM Tuning, and CDN Rules for High-Traffic Launches

Ivan

Ivan

Lead Engineer & Strategist at Softlimes

Redis Object Caching, PHP-FPM Tuning, and CDN Rules for High-Traffic Launches

Why Servers Return 502 Bad Gateway When CPU Is Only at 30 Percent

A company spends weeks preparing a major product launch or television appearance, only for the website to return 502 Bad Gateway errors five minutes after the campaign goes live. When the developer checks the server dashboard, CPU and disk usage are barely at thirty percent, leaving everyone confused.

In nearly every case, the server crashed because default PHP-FPM pm.max_children settings are set to a tiny number like 5 or 10 processes, or because uncached database queries piled up waiting for MySQL row locks until Nginx timed out.

Calculating PHP-FPM Process Pools Based on Actual RAM Usage

Leaving PHP-FPM on default settings wastes available server RAM, while setting pm.max_children too high causes the Linux Out-Of-Memory (OOM) killer to terminate MySQL or PHP during a traffic spike. We calculate process limits using actual production memory footprints.

We measure the average resident memory (RSS) of a single PHP worker under load (typically 65 MB for a Laravel or WooCommerce process), subtract reserved RAM for the OS, Redis, and database buffer pools, and configure pm.max_children and pm.max_requests to recycle workers cleanly before memory leaks accumulate.

  • Use dedicated Redis databases (separation by database index or prefix) for object caching, user sessions, and background queues.
  • Enable igbinary and lz4 serialization on the PHP Redis extension to cut network payload sizes and memory usage by half.
  • Configure Nginx fastcgi_cache_lock and stale-while-revalidate rules so only one request regenerates an expired cache page.
  • Bypass full-page edge cache only when an active cart or logged-in session cookie is present, not on generic tracking cookies.

Preventing Cache Stampedes With Nginx Microcaching and Edge Rules

Even if a page is cached for sixty minutes, what happens when that cache entry expires at the exact second two hundred visitors request the homepage? Without lock protection, all two hundred requests bypass the cache simultaneously and hammer PHP and MySQL with identical queries, causing a cache stampede.

We enable fastcgi_cache_lock and fastcgi_cache_use_stale updating in Nginx (alongside Cloudflare Cache Reserve and tiered caching). While a single background PHP worker refreshes the expired page in 200ms, the other 199 visitors receive the cached response immediately.

Load Testing With k6 Before Your Marketing Budget Goes Live

We never wait for real paying customers to test whether a server configuration can handle a launch. Before a major campaign, we run scripted load tests using k6 that simulate both anonymous browsing traffic and concurrent logged-in checkout sessions.

By watching database slow query logs, Redis hit ratios, and PHP worker saturation under simulated load, we fix bottlenecks days in advance so your launch day runs without a hitch.

During the launch window, our infrastructure engineers monitor live Nginx access logs, PHP-FPM active process counts, and Redis memory eviction metrics in real time. Your marketing team can push campaign traffic hard knowing the server stack is built to hold steady.

Related Softlimes Service

Website Performance

See how our engineering team scopes, builds, and supports this workflow in production.

Explore Service →

Related articles by Ivan

Work With Us

Need engineering or marketing help on your next release

Talk directly with Ivan and the Softlimes engineering team to scope your web application, online store, AI workflow, or search campaign.