The database was being killed by its own configuration, every 40 minutes
The symptom was “Error establishing a database connection”, on and off, all day. MySQL's own counters were clean the entire time.
Camera and photo retailer · WooCommerce · 2,529 products · 2 cores, 3.8 GB RAM
Measured 2026-08. The site is never named — see our policy on client anonymity below.
What changed, measured
| Measurement | Before | After | Change |
|---|---|---|---|
| InnoDB buffer pool | 19.6 GB | 1 GB | -95% |
| OPcache hit rate | 84.8 % | 99.9 % | +18% |
| Uncached TTFB | 9.8 s | 2.4 s | -76% |
| Server load average | 18.4 | 3 | -84% |
How it actually went
The buffer pool was configured at 19.63 GB on a server with 3.8 GB of RAM — about five times the physical memory. That made mysqld the kernel's first target whenever memory ran short, so the database was being killed and restarted all day. The uptime series told it plainly: 60 minutes, 39, 40, 3, 2.
The trap is that MySQL looks innocent throughout. Connection counts and slow-query counts stay clean right up until the kernel kills the process, so ruling out the database because it appears idle is exactly the wrong move. Read configured memory against physical RAM first.
OPcache was the second engine. Fifty-two plugins compile to 135.7 MB of PHP against a 128 MB cache, which means zero bytes free, 3.3 million misses and constant recompilation burning both cores.
We also removed two plugins the store no longer used. That alone took load from 18.35 to 3.64 — and it did not stop the crashes. Only the memory settings did, which is worth remembering before a plugin audit gets the credit for a server fix.
Check configured memory against physical RAM before ruling out the database. Its own counters stay clean right up until the kernel kills it.
Other measured jobs
276,000 autoloaded rows, loaded on every single page view
276,000 → 1,796Autoloaded options rowsStore B · 2026-09-05The “huge website” was 14% of the number the client was reading
79:1Safe reclaim vs risky reclaimStore C · 2026-09-03Zero of 261 category pages had a meta description
0 → 261Category pages with real meta copyStore E · 2026-08The plugin installed to make the site faster was the entire reason it was slow
281×slower per cache write, on disk versus in memoryPlans priced on the work,
not on the checklist
Month to month, no lock-in. Prices are per site, per month, exclusive of GST. Portfolios and multi-site estates are quoted on the estate.
For a site that just needs to stay up, patched and backed up
For a store where slow pages are costing orders
Running a portfolio you cannot afford to have go quiet? Managed starts from ₹17,999/mo.