Why Your Magento Store Is Slow (And How We Actually Diagnose It)
"Our site is slow" is the single most common thing merchants tell us on a first call. It's also the least useful diagnostic starting point, because slowness on Magento can come from at least five distinct layers, and the fix for one makes no difference to the others. Installing a caching extension and hoping for the best is how stores end up with three overlapping cache layers and still a 6-second homepage.
Layer one: the database
A huge share of the slow stores we've inherited have databases that were never indexed properly for their catalog size. Magento's own indexers (price, category, EAV) can fall behind on large catalogs, and once indexers are behind, product pages fall back to slow live queries instead of pre-computed flat data. Before we touch anything else, we check indexer status and query logs for anything scanning full tables.
Layer two: PHP and server configuration
Magento is CPU and memory hungry, and a lot of hosting setups we see are running PHP-FPM with pool settings copy-pasted from a generic tutorial rather than sized for the store's actual traffic and catalog. OPcache misconfiguration alone — too small a memory buffer, validate_timestamps left on in production — routinely costs 30-40% of available performance for free.
Layer three: caching that isn't actually working
Full Page Cache (Varnish or the built-in Magento cache) should mean the vast majority of requests never touch PHP at all. We frequently find FPC installed but effectively disabled, because a poorly written extension adds a session-dependent block to every page, which forces Magento to treat every page as "private" and bypass the cache entirely. Finding that one block can turn a 4-second page into a 400ms one.
Layer four: Elasticsearch and search relevance
A misconfigured or under-resourced Elasticsearch instance shows up as slow search, slow category pages with layered navigation, and sometimes timeouts under load. We check shard configuration, JVM heap sizing, and index freshness as a matter of course — not just whether Elasticsearch is "installed."
Layer five: front-end weight
Even a perfectly tuned backend can't fix a theme shipping 4MB of uncompressed JavaScript, render-blocking web fonts, and unoptimized hero images. This is where Core Web Vitals live, and it's a completely separate diagnostic from server-side performance — we treat it as its own audit pass.
Why we don't start with a caching plugin
Every one of these five layers requires a different fix, and none of them are diagnosed by "turn on this plugin and see what happens." Our Health Check process profiles all five layers before we recommend a single change, because the fix that actually moves the needle is different for almost every store we look at. Guessing wastes both your time and your developer's — measuring first is what tells you where the real bottleneck is.
Want a second opinion on your own store?
Get a free, no-obligation Adobe Commerce Health Check from our team.
Claim Free Health Check