Store D · 2026-08

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.

The headline number19.63 GB → 1 GBInnoDB buffer pool, on a 3.8 GB server

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

InnoDB buffer pool-95%
Before
0 GB
After
0 GB
OPcache hit rate+18%
Before
0 %
After
0 %
Uncached TTFB-76%
Before
0 s
After
0 s
Server load average-84%
Before
0
After
0
Every figure re-measured on the same sample after the work. Bar length uses a square-root scale so large reductions stay visible; the figures shown are exact.
Every figure re-measured on the same sample after the work.
MeasurementBeforeAfterChange
InnoDB buffer pool19.6 GB1 GB-95%
OPcache hit rate84.8 %99.9 %+18%
Uncached TTFB9.8 s2.4 s-76%
Server load average18.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.

The rule we took away

Check configured memory against physical RAM before ruling out the database. Its own counters stay clean right up until the kernel kills it.

Pricing

Plans 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.

CARE PLAN

For a site that just needs to stay up, patched and backed up

Uptime and error-log monitoring
Weekly off-disk backups, restore tested
Core, theme and plugin updates
Monthly security scan and report
PERFORMANCE PLAN

For a store where slow pages are costing orders

Everything in Care
Monthly database and autoload optimization
Object cache, OPcache and edge cache tuning
Bot and firewall policy, cart-safe
Email deliverability and SPF/DKIM checks

Running a portfolio you cannot afford to have go quiet? Managed starts from ₹17,999/mo.