Magento Open Source performance optimization

A slow Magento Open Source store loses orders at the moments it matters most. This page covers how to measure the bottleneck, fix the cache, search, indexing and database layers in the right order, and verify the result under load.

On this page

How Magento Open Source performance optimization starts with a measured baseline

Performance work on a Magento Open Source store starts by finding the constraint, then fixing it in a fixed order. The constraint is usually in one of five places: full-page caching, search, indexing and cron, the database, or front end assets. A slow storefront or admin under campaign traffic rarely has one obvious cause, so the first job is to record where time is spent before changing any setting. Teams that skip this step tend to tune whatever they can reach, such as a cache lifetime or a search timeout, and then see the bottleneck move somewhere else. The work is harder than it looks because the platform runs several services that depend on each other. Varnish serves cached pages, Redis or Valkey holds cache and sessions, OpenSearch powers catalog search, RabbitMQ carries asynchronous work, and cron drives indexers and background jobs. A self-hosted store owns every layer, so no vendor support team will take the whole stack. A change that clears a cache can increase database load, and a faster indexer can hide a stale catalog that customers then see. Each fix should be checked against the layers next to it, not only the one it targets. The starting point is the version set, not the code. Adobe supports only listed combinations of PHP, database (MySQL or MariaDB), OpenSearch, Redis or Valkey, RabbitMQ, Composer and nginx for each release, and the system requirements page for the release in use is the reference. For Magento Open Source 2.4.9, the requirements list PHP 8.5, OpenSearch 3, Redis or Valkey 9, RabbitMQ 4.3 and nginx 1.30 among others. Confirm the exact list for your release before you measure, because a baseline taken on an unsupported combination will not tell you what a supported store will do. If you run an earlier 2.4.x line, its requirements differ and should be checked separately. In practice, record a baseline over a normal day and a peak or campaign window. Capture page timings for key storefront and admin pages, cache hit rates, OpenSearch query latency, indexer status and cron run times, database slow query output, and front end metrics that affect Core Web Vitals. Keep the environment the same across measurements, including PHP version, service versions and the Varnish configuration, so later changes can be compared fairly. Ask your team or partner to name the owner of each measurement and the threshold that triggers a fix. Before you commit to a plan, decide who owns each layer and how changes will be tested. Confirm whether your hosting provider or internal team controls Varnish, Redis or Valkey, OpenSearch and the database, and who can change nginx and PHP settings. Agree on a rollback path for each change. A written baseline with named owners gives you the evidence to prioritize the fixes that matter and to show whether a change helped.

Which Magento Open Source components decide speed

A slow Magento Open Source store usually traces back to one of a few components, each with its own symptom and its own version dependency. Check them in the order a request travels, then confirm the versions your release requires before changing anything.

Varnish full-page cache

Varnish is the full-page cache accelerator Adobe documents for self-managed Magento Open Source installations. When it is missing or misconfigured, every category and product request reaches PHP and the database, and traffic spikes show up as slow page loads for anonymous shoppers. Check cache hit rates and confirm the Varnish version for your release against the system requirements page: the researched facts list Varnish 8 for 2.4.8-p5 but do not list it for 2.4.9.

Redis or Valkey for cache and sessions

Redis or Valkey holds the application cache and customer sessions. If they run on the same disk as the database or share a memory limit with other services, admin and checkout slow down under load and sessions may be lost during restarts. For 2.4.9, Adobe lists Redis or Valkey 9 as the supported line. Confirm eviction policy, memory limits and persistence settings with your hosting team.

OpenSearch for catalog search

Catalog search, layered navigation and autocomplete run on OpenSearch, so a slow search box or filter panel points here before it points to the theme. For 2.4.9, Adobe lists OpenSearch 3 as the required version. Check heap size, shard count for your catalog, and whether the search service shares a host with the web tier. Confirm the exact supported settings in the system requirements for your release.

Indexers, cron and the database

Indexers rebuild catalog data and cron runs scheduled work such as price updates and cache cleaning. Long or stalled indexing produces stale product data, slow admin saves and database lock contention. For 2.4.9, Adobe lists MySQL 8.4 or MariaDB 12.3 (recommended) or 11.8. Check indexer status, the cron job queue and slow query logs before adding hardware, because a few slow queries often explain the symptom.

RabbitMQ consumers for asynchronous work

RabbitMQ carries asynchronous tasks such as bulk operations and some integration messages, and its consumers must run continuously to drain the queue. A backlog of unprocessed messages or consumers that have stopped leads to delayed orders, exports and ERP updates that look like general slowness. For 2.4.9, Adobe lists RabbitMQ 4.3. Confirm which consumers your store enables and how they are supervised.

PHP OPcache, PHP-FPM and nginx

PHP 8.5 with OPcache and PHP-FPM, served behind nginx 1.30, forms the application runtime for 2.4.9. Undersized FPM worker pools, a small OPcache memory allocation, or a misconfigured nginx upstream cause queueing and 502 or 504 errors during peaks. Check worker utilization, OPcache hit rates and nginx timeouts together, and confirm the PHP and nginx lines your release supports before tuning.

Theme front end assets

Theme CSS, JavaScript, images and third-party tags often cause the slowest Core Web Vitals scores even when the server responds quickly. Unoptimized images, render-blocking scripts and tag managers loaded on every page are typical causes. Audit the theme and extensions that add scripts, and confirm that Content Security Policy settings still permit the assets you load, since restrict mode is the default on storefront and admin payment pages from 2.4.7.

Which performance decisions change the cost of running the store

This table compares five performance choices that shape how much effort a Magento Open Source store takes to run after launch. Read each row as a decision: when the option fits, and what it adds to patching, cache handling, reindex windows and staffing. The main takeaway is that the cheapest-looking setting at launch often carries the highest operating load once catalog imports, theme changes and upgrades begin.

DecisionWhen it fitsOperational cost to plan for
Varnish full-page cache in front of nginxCatalog and content pages with high read traffic and predictable page layouts that can be cached safelyExtra service to patch and monitor; cache invalidation rules must match catalog, price and promotion changes; personalized blocks need careful handling
Application-level caching onlySmaller stores with modest traffic or where a separate cache tier is not yet justifiedFewer moving parts, but every uncached request reaches PHP and the database, so peak load falls on the application tier
Redis or Valkey for cache and sessionsMulti-node web tiers, where sessions must be shared and cache must survive a web node restartAnother service to patch, size and monitor; memory limits need watching; a failover plan is needed if checkout depends on sessions
File-based cache and sessionsSingle web node deployments with low concurrency and a simple test or staging environmentSessions and cache tied to one server, which complicates scaling and rolling deployments; I/O can become a bottleneck under load
Indexers on scheduleCatalogs with frequent bulk imports where a predictable reindex window is acceptableStorefront data can lag behind stock and price changes; reindex windows must be scheduled around imports and monitored for overruns
Indexers on update on saveCatalogs with small, frequent edits where shoppers need current data immediatelyHeavy imports can slow admin saves and storefront writes; large catalog changes can cause sustained database and search load
Cron-driven processingStores with light background work and few asynchronous tasks such as email or ERP syncCron jobs can overlap or stall; job health must be checked on each run, and missed runs delay orders and stock updates
Dedicated queue consumers with RabbitMQStores with ERP integration, bulk order processing or asynchronous tasks that must not block checkoutExtra service to run and patch; consumer processes need supervision and restart rules; message backlogs must be monitored
Theme-level asset reductionStores that want consistent Core Web Vitals and a theme that stays easy to upgradeRequires disciplined front end build work and periodic review of the asset pipeline; gains are lost if extensions add scripts back
Heavier theme with more third-party scriptsStores where marketing tools, reviews or chat widgets are business requirementsEach script adds page weight and a third-party dependency; script audits and performance budgets must be repeated after every release

Why Varnish full-page cache hit rates decide Magento Open Source performance

A Varnish full-page cache hit rate is the single most useful indicator of how much load a self-managed Magento Open Source store pushes into PHP and the database. When Varnish answers a request from memory, PHP-FPM and MySQL or MariaDB never see it. When it misses, the request runs the full application stack. Adobe documents Varnish as the full-page cache accelerator for self-managed installations, so the team running the store owns the cache configuration, the VCL that governs it, and the purge path that clears stale content after catalog changes.

Magento serves most pages to anonymous visitors from cache, but some blocks are personal: the mini cart, the customer greeting, and prices that vary by customer group. Magento handles this with private content. The page is cached as a shell, and personalized fragments are loaded separately per visitor, usually through a small JavaScript request to a cache-aware endpoint. Category and product pages can usually be cached because their shared content is the same for everyone in a given group, but a page that renders customer-specific pricing or a visible login state needs its variations keyed correctly. If the VCL, the cookies Varnish inspects, or the store's private content settings disagree, the hit rate falls and the cost shows up as database load, not as a visible error.

Cache tags decide how precisely Varnish clears content after changes. When a product price, stock status, or category assignment changes, Magento sends purge requests for the cache tags tied to the affected entities, so unrelated pages stay cached. Teams should confirm that the purge endpoint is reachable from the application servers, that the Varnish access list allows it, and that the tag-based invalidation is tested after a bulk import from the ERP or a catalog update. A purge path that fails silently leaves customers seeing old prices, which is often discovered by the business before engineering notices.

Cart, checkout, and account pages must bypass the cache. They depend on a session cookie and on data that changes with every action, so Varnish should pass those requests straight to the web tier. The VCL needs to recognize the relevant routes and cookies and must not cache responses that set or depend on the customer session. Checking this is simple: request a cart or checkout URL with and without a session cookie and confirm the response carries no cache hit indicator. Teams should also confirm that the Varnish configuration matches the Magento cache settings for the version they run, since the VCL template and the expected headers are version-specific. Adobe's Varnish guidance and the release notes for the chosen 2.4.x line are the reference points to verify against.

To check behavior, read the response headers. Varnish adds headers that show whether a request was a hit or a miss, and Magento's own cache headers show which tags were attached to the response. Run the same product URL several times, confirm the hit count rises, and compare the result for a logged-in customer and an anonymous visitor. Track the hit rate over a normal day and during a campaign, and record it as a baseline before tuning. Cloud-hosted Adobe Commerce uses Fastly instead of Varnish, so these tasks belong to the self-managed team and should be named explicitly in any implementation or support scope, along with who approves VCL changes and who monitors the purge path after each release.

Magento Open Source performance optimization steps in the right order

This sequence moves from measurement to version alignment, then to caching, search, indexing and front end work, so each change is tested against a known baseline. Each step closes with a check, which lets the team confirm the gain before moving on.

  1. Record a baseline on production-like data

    Your team or a partner captures server response times for home, category, product, cart and checkout pages, the database slow query log, and front end timings from a scripted browser run. The test store should hold a copy of production-scale catalog and order data, because an empty or small catalog hides most of the problems. Done when you have a dated baseline file that lists the same pages and metrics, so every later change can be compared against identical measurements.

  2. Align services with the supported version matrix

    Check PHP, the database, OpenSearch, Redis or Valkey, nginx and Varnish against the system requirements for your exact Magento Open Source release. For 2.4.9, Adobe's requirements list PHP 8.5, MySQL 8.4 or MariaDB 12.3 or 11.8, OpenSearch 3, Redis or Valkey 9 and nginx 1.30, and Adobe supports only the listed combinations. Confirm the Varnish version for your release on the same requirements page. Done when a signed-off version sheet matches that page and the staging environment reports the same versions.

  3. Enable production mode, OPcache and static deployment

    Switch the store to production mode, confirm OPcache is enabled with memory settings sized for the codebase, and generate static view and theme files during the deployment step so shoppers do not trigger file generation on their requests. Check the deploy mode with the Magento command line tool, confirm OPcache status on a web node, and request a static theme asset directly to confirm it is served without a PHP request. Done when all three checks pass on every web node.

  4. Move cache and sessions to Redis or Valkey

    Configure the default cache, the page cache and session storage to use Redis or Valkey in the environment configuration, with each purpose in its own database or instance. Confirm the eviction policy suits each purpose, because session data should not be evicted in ways that sign shoppers out. Run a load test and check the eviction counter, then restart one web node and confirm a logged-in shopper keeps the same session. Done when the eviction counter stays where your policy expects and sessions survive the restart.

  5. Configure Varnish with the Magento VCL

    Generate the Varnish configuration from Magento, point Varnish at the web backends, and keep cart, checkout and customer account pages out of the cache. Adobe documents Varnish as the full-page cache for self-managed installations, so this step applies to your own servers. Request a category page and a product page twice and check the cache debug response header for a HIT on the second request. Then confirm cart and checkout pages return a bypass or miss on every request. Done when category and product pages hit the cache and cart and checkout never do.

  6. Tune OpenSearch for catalog search

    Point Magento at the OpenSearch cluster, size the cluster and index settings for the catalog, and confirm search behavior for typical customer queries, including misspellings and attribute filters. Check cluster health on the OpenSearch health endpoint and confirm the index shows green after a full reindex. Run a set of known search terms and compare the result counts and top products with what the merchandising team expects. Done when cluster health is green and the test queries return the expected products.

  7. Schedule indexers and cron, then review database load

    Set each indexer to the update mode your catalog changes require, configure the cron jobs and message queue consumers, and run a full reindex on the production-like copy. Then check the indexer status command and the queue backlog until the backlog drains and every indexer reports ready. After the run, review the slow query log and database settings against the baseline, looking for the queries that scale with catalog size or order history. Done when indexers are ready, the backlog clears on schedule, and the slow query count for the key pages is lower than the baseline.

  8. Reduce render-blocking scripts and oversized images

    In the theme, find scripts that block first paint, defer or load them after the page renders, and replace or resize images that exceed the display size on product and category pages. Measure the same pages in a lab test first, then compare them against field data from real shopper sessions, because lab numbers do not show the Core Web Vitals your customers experience. Done when lab tests show fewer blocking resources on the same pages and field data for those page groups moves in the expected direction over the period you agreed to review.

How to prove Magento Open Source performance optimization holds under peak load

The only reliable proof that a Magento Open Source performance change works is a before and after test run under conditions that match peak trading. Before any tuning starts, record a baseline on a staging environment that mirrors production: the same PHP, MySQL or MariaDB, OpenSearch, Redis or Valkey and nginx versions, the same web node count, and a catalog close to production size. A test on a near-empty catalog with a cold cache will look fast and prove nothing. Warm the full-page cache and the Redis cache before measuring, and record how long that warm-up takes, because a cold start after a deployment is itself a peak risk.

Script the journeys that earn revenue rather than only hitting the home page. A useful load profile includes category browsing with layered navigation, search, product views, add to cart, cart updates, the checkout from shipping through payment, and logged-in customer account pages. Include the admin side as well: run grid tests in the order grid, customer grid and product grid against a dataset with large order volumes, since admin slowness during a sale delays fulfillment even when the storefront is fine. Compare each run with the recorded baseline on response time at the percentiles your business agrees on, error rate, database load and queue backlog, and keep the test configuration identical between runs so the comparison means something.

Confirm that the stack fails safely, because a faster configuration that drops carts is a regression. Stop Varnish during a test and check that pages still render from the origin, with slower response times but no lost cart contents or duplicated orders. Stop Redis or Valkey and confirm that sessions and cache behavior degrade in a controlled way, with customers able to continue their checkout and no cart or order records lost or corrupted. Run the same drills during a checkout load test, then verify order counts, payment records and stock quantities against the test log. Ask your implementation partner to document the expected behavior for each failure so the result can be judged against an agreed standard, not an impression.

Indexers need the same scrutiny. Under heavy catalog or price changes, check the indexer status output and the admin index management grid, and confirm that a lagging indexer is shown clearly as invalid or behind, so operations staff know when storefront data may be stale. Decide in advance what the team does in that case, such as pausing bulk imports, and confirm that cron jobs and the message queue consumers are running during the test. Record queue depth at the start and end of each run.

Field data is the final check, because lab tests cannot reproduce every device, network and customer path. Measure Core Web Vitals from real users with your analytics or real user monitoring tooling, segmented by page type, device and country, and compare the distribution before and after the change. Confirm the current metric names, thresholds and how field data is aggregated with the official Google documentation for Core Web Vitals rather than relying on memory, because definitions change over time. Also confirm which Magento Open Source version and patch level your test environment runs, since the release notes for the 2.4.x line list the supported component versions you must match.

How the same fixes differ on a single server, a load-balanced tier or an air-gapped network

On a single server, web, PHP, database, search, cache and queue services share one host, so most cache layers are local and purges are immediate. Varnish, when you run it, typically sits in front of nginx on the same machine, and Redis or Valkey serves as a local cache and session store. The main risk is resource contention: a full reindex or a cron backlog can starve the storefront of CPU and memory during peak hours.

  • Varnish placement: Varnish listens on the public port and forwards cache misses to nginx on a local socket or loopback address.
  • Cache sharing: Config, page and block caches are local, so a single flush clears everything the storefront reads.
  • Purges: Cache invalidation from the admin reaches Varnish and Redis on the same host, with no fan-out step.
  • Manual work: You still patch the OS, PHP, OpenSearch and Varnish yourself, and you size each service so indexers do not compete with checkout.
  • Limits to test: Confirm that the chosen service versions are on the Adobe system requirements list for your Magento Open Source release.

Before you change anything, check that Varnish, Redis or Valkey and OpenSearch each have enough memory set aside, and that cron and indexers run on a schedule that avoids peak traffic.

What drives the effort and cost of a performance project

This table lists the factors that most change how much work a Magento Open Source performance project takes, with a practical way to keep each one under control. Use it to see which drivers apply to your store before you ask for a scoped quote. The main takeaway is that the largest gains usually come from reducing what runs on every request, not from adding more hardware.

DriverWhy it changes effort or costHow to keep it down
Catalog size and product attributesLarge catalogs and many attributes lengthen full and partial indexing, and attribute-heavy product pages add load on the database.Remove unused attributes, consolidate overlapping ones, and confirm which attributes are actually filterable or shown on the storefront.
Store views and websitesEach store view and website multiplies indexing, caching, URL rewrites and configuration to test.Keep the store structure as small as the business allows and confirm whether each view needs its own catalog or only its own content.
Traffic peaks and campaign calendarPeak load sets the cache hit rate, capacity and load-test scope needed to keep checkout available during sales.Agree the critical journeys and expected peak windows early, then scope load testing and cache warming to those paths.
Installed extensionsExtensions that run queries or observers on every page add database and PHP work, and poorly maintained ones block cache.Audit each extension for per-request queries and cache behavior, then remove or replace those that add cost without clear value.
Custom code that bypasses the cacheCode that sets private headers, calls uncacheable blocks or reads session data on public pages reduces full-page cache hits.Review custom blocks and controllers for cache tags and lifetimes, and move personalized content to client-side loading where possible.
Third-party tags and theme assetsAnalytics, chat and marketing scripts plus large theme bundles slow rendering and hurt Core Web Vitals, often more than server work.Load tags through a single governed container, defer non-essential scripts, and remove assets no page uses.
Number of environmentsEach environment needs its own configuration, indexing, cache and data refresh, and performance results must be repeated on each.Keep a production-like staging environment with the same versions and search and cache services, and limit other environments to functional testing.
Logging and data residency constraintsLogging rules, retention limits and data location requirements can restrict where caches, search indexes and logs may be stored or how much detail is kept.Confirm logging and retention requirements before tuning, and agree with your compliance lead where cache, search and log data may reside.

Securing caches, search and admin during performance work

Performance changes often add services, open ports, cache rules and scripts that were not there before. The cards below cover the controls most likely to weaken during tuning, with the risk each one addresses and the check that confirms it is still in place.

Private access for Redis, Valkey and OpenSearch

Redis or Valkey holds sessions and cache data, and OpenSearch holds the catalog index. Both are often reached over the network during tuning, and a service left open to other hosts can expose data or allow unauthenticated writes. Bind each service to private addresses, enable authentication, and restrict inbound traffic to the web and worker nodes. Confirm with a port scan from outside the application network and a check of each service's auth settings after every change.

Limit who can trigger Varnish purges

Varnish purge and ban requests remove cached pages, so an exposed purge endpoint lets anyone force load back onto the database and origin servers. Restrict purge requests to the application's own addresses and the cache management path, and confirm that the purge endpoint returns an error to other clients. Review the Varnish configuration whenever the cache rules change, since a new location block can reopen the path.

Keep customer and payment data out of cache

A full-page cache that stores responses containing a customer's name, address, order details or payment form state can serve one shopper's data to another. Check that account, cart, checkout and payment-related responses are marked as non-cacheable, and that Varnish does not strip the session or private-data cookies needed to vary responses correctly. Test with two logged-in accounts and confirm that each sees only their own content.

Review CSP changes for performance scripts

Adding analytics, personalization or speed-related scripts often means editing the Content Security Policy to allow new sources. From version 2.4.7, Magento Open Source runs CSP in restrict mode by default on storefront and admin payment pages, so a blocked script can break checkout or the payment form. Review every allowed source, keep the list as narrow as possible, and confirm payment pages still load in a browser console test with no policy violations.

Vet third-party caching and CDN extensions

Caching and CDN extensions sit between shoppers and the store, so they can change headers, purge logic and how responses are cached. Before installing one, confirm its source, its update history, the permissions it requests and whether it has been reviewed against the Magento version in use. Ask the vendor how it handles customer-specific content and what it changes in the web server configuration, and record the answers in the extension audit.

What to monitor, document and upgrade after the tuning is done

Tuning a Magento Open Source store is a one-time project, but the settings it produces drift as catalog size, traffic and extensions change. The durable work is a short list of signals that someone checks on a fixed schedule. The first group sits in the cache and session layer: the Varnish full-page cache hit ratio and backend response time, which show whether pages are still being served from cache, and Redis or Valkey memory use and eviction counts, which show whether sessions and cached blocks are being pushed out too early. A falling hit ratio after a theme or catalog change is often the first visible sign that a new cookie or uncacheable block has been added to pages that used to cache well.

The second group covers search, indexing and background work. Watch OpenSearch cluster health and index size, because catalog growth and reindexing can quietly push a node toward its limits. Track the indexer backlog and the duration of cron jobs, since a growing queue of invalidated indexes or cron runs that overlap each other usually explains stale prices and slow admin saves before customers report them. Slow query logs on the database and PHP-FPM worker saturation round out the picture: if workers sit at their configured maximum during normal traffic, the bottleneck is usually in code or in a backend call, not in the pool size itself.

Configuration needs the same discipline as code. Back up the Varnish VCL, the nginx site configuration, the PHP and PHP-FPM pool settings, and the Redis, Valkey, OpenSearch and database service settings, and store them in version control with the environment they belong to. Keep a written record of the chosen indexer modes (update on save or update by schedule for each index), the cron schedules and the expected duration of each important job, and the cache and session settings in env.php. Without this record, the next engineer cannot tell whether a slow admin is a regression or a setting that was always there. Confirm the exact file locations and settings with your own environment and with the Magento configuration documentation for your release.

Upgrades are the event most likely to undo tuning. Adobe recommends upgrading every patch cycle to stay secure and PCI compliant, and each patch or minor release can change cache behavior, indexer handling, required service versions and the way extensions interact with the cache. Adobe also lists customizations, extension count, third-party integrations and coding practices as drivers of upgrade effort, so the same tuning checks should be part of the upgrade test plan rather than an afterthought. Run the baseline before the upgrade, compare the same measurements after it in a staging environment that mirrors production, and treat any drop in hit ratio, rise in backend response time or longer cron duration as a defect to resolve before go-live.

Decide now who owns each signal, what threshold triggers action and where the baseline results are stored. Ask your implementation partner, or your own team, to state those thresholds in writing and to include the performance checks in the upgrade test plan with a named owner. Confirm the supported PHP, OpenSearch, Redis or Valkey and Varnish versions for the release you plan to run against Adobe's system requirements before each change, because Adobe supports only the listed combinations. Re-running the baseline after every patch or upgrade is the rule that keeps tuning from decaying silently.

What buyers ask before paying for Magento Open Source performance work

How much effort does Magento Open Source performance work take?

Effort depends mostly on catalog size, the number of installed extensions, theme complexity and how much custom code runs on product, category, cart and checkout pages. A review of a small store on a standard theme is a much smaller job than a multi-store catalog with custom pricing logic. Ask the partner to split the effort into diagnosis, fixes, load testing and handover, and to name the environments and tools each step needs. Version drift adds work before tuning starts. The Magento Open Source 2.4.9 requirements list PHP 8.5, MySQL 8.4 or MariaDB, OpenSearch 3, Redis or Valkey 9, RabbitMQ 4.3 and nginx 1.30, and Adobe supports only the listed combinations. Confirm which of those your store runs today, because any gap will appear in the first week of the project.

What drives the cost of a Magento performance optimization project?

The cost splits into a few components. Diagnosis covers profiling the storefront, admin, cron and database under realistic traffic. Configuration covers Varnish, Redis or Valkey, OpenSearch, indexers, cron and PHP settings. Theme and front end work covers render-blocking assets and layout shifts that hurt Core Web Vitals. Code fixes cover slow queries or heavy observers in custom modules. Load testing checks the result before cutover. Costs rise with custom modules that run heavy queries, third-party extensions that add scripts, multiple store views and large catalogs. Ask for each component to be priced or estimated separately so you can see which parts your own team could keep. DeployOpen does not publish a price list, and a quote follows from the written scope.

How long does a Magento performance project usually take to finish?

The duration follows the scope, and no duration figure applies here. Timing depends on how many stages the work contains, whether a staging copy with production-like data exists on day one, how many code changes need review, and how often your release calendar allows deployments. A project that starts with an unknown root cause usually spends more time in diagnosis than planned. Ask the partner for a phase plan that names dependencies, approval points and the release windows they need. Load testing and cutover should be separate phases, because both depend on infrastructure availability and on your change freeze dates. Fixed-scope engagements are agreed in writing before work starts, so the timeline in that document is the one to hold the partner to.

What must our internal team provide before performance work starts?

The partner needs four things from your side. Access: read access to web, database, cache and search hosts, the admin panel, cloud accounts and any application performance monitoring tool. Staging copies: a staging environment with recent data, anonymized where needed, so tests reflect real catalog and order shapes. Analytics: server logs, field performance data for Core Web Vitals, and funnel reports that show which pages matter most. Release calendar: deployment windows, freeze dates and the name of the person who approves production changes. If payments run through the store, agree in advance that production card data stays out of staging and test tools. Also provide a list of installed extensions and custom modules, because that list drives most of the diagnosis effort.

Can our internal team handle Magento performance optimization alone?

Often yes, if the team already runs Magento and Linux in production and has hands-on experience with the components involved. The skills that matter are PHP profiling, MySQL query analysis, Varnish configuration, Redis or Valkey tuning, OpenSearch sizing and front end performance. Check whether at least one engineer has done each of these on a live store, not only in a lab. The main risks for an internal team are testing too little before a change, skipping load tests before peak season and missing the effect of an upgrade on tuned settings. Adobe's upgrade guide names customizations, extension count, third-party integrations and coding practices as drivers of upgrade effort, so track those when you plan the work. A partner can take the diagnosis and load testing while your team keeps ownership of the code and release process.

Which parts of performance work recur after the store launches?

The one-time work is the initial diagnosis, the first configuration build and any theme or code refactor. Recurring work follows the platform lifecycle. Adobe recommends upgrading every patch cycle to stay secure and PCI compliant, and standard support for 2.4.6 ends on August 11, 2026, 2.4.7 on May 31, 2027, 2.4.8 on May 31, 2028 and 2.4.9 on May 31, 2029. Each upgrade can change caching, indexing and extension behavior, so tuned settings need a retest. Other recurring tasks include reviewing cache hit ratios, checking indexers and cron, updating extensions, retesting after catalog growth and running load tests before peak periods. Content Security Policy also changes over time: from 2.4.7, CSP runs in restrict mode by default on storefront and admin payment pages, so script changes need review. Ask the partner which of these tasks sit inside a retainer and which are billed per request.

What should a fixed-scope quote for performance work name?

A fixed-scope quote should name the pages and transactions in scope, such as home, category, product, cart, checkout and key admin workflows. It should state the baseline measurements taken before work starts and the acceptance criteria used at the end. List every component in scope: Varnish, Redis or Valkey, OpenSearch, indexers, cron, database, PHP settings and front end assets. Name what is excluded, including third-party extension rewrites or hosting changes. Describe the load test profile, the environments used and the deliverables, such as a runbook, dashboards and a handover session. Confirm the client dependencies with dates, and list the support period after handover. Pricing and timing should both follow from that written scope, so any change to scope should trigger a written change request with its own estimate.

Which cache layer should we check first when Magento pages are slow?

Start with the full-page cache. Adobe documents Varnish as the full-page cache accelerator for self-managed Magento installations, while cloud-hosted Adobe Commerce uses Fastly instead. Check the Varnish hit ratio, whether product and category pages are cacheable, and whether cookies or private content are forcing misses. Invalidation rules are a common cause of slow pages after catalog updates. Next, review Redis or Valkey, which often holds sessions and cache data, and check for memory pressure or evictions. Then review OpenSearch, since slow category listings and search results often trace back to index settings or query load. The Magento Open Source 2.4.8-p5 requirements list Varnish 8 as a supported version, so confirm your Varnish release against the matrix for your Magento version before any tuning change.

How DeployOpen works on this

DeployOpen approaches Magento Open Source performance work as a fixed-scope engagement inside your own infrastructure, starting with measured bottlenecks rather than assumed fixes. We diagnose the storefront and admin, agree the changes in writing, implement them against the supported component versions, and hand over documented configuration and runbooks your team can operate.

How we scope

  • Review slow storefront and admin pages, and the caching, search, indexer and cron setup behind them.
  • Measure Core Web Vitals and server response times before agreeing which changes are in scope.
  • Confirm your PHP, MySQL or MariaDB, OpenSearch, Redis or Valkey and Varnish versions against the Adobe system requirements for your release.

How we build

  • Configure Varnish full-page caching, Redis or Valkey cache and session storage, and OpenSearch settings.
  • Tune indexers, cron schedules and database queries, then reduce front end asset weight that hurts Core Web Vitals.
  • Test each change in a staging copy of your store and record before-and-after measurements for every change.

How we hand over

  • Deliver written configuration records, change logs and the tuning decisions behind each setting.
  • Provide runbooks for cache purges, reindexing, cron checks and search index rebuilds that your team can run.
  • Walk your engineers through the measurements and agree which performance checks they will repeat after each release.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer after the fixed-scope work closes.
  • Retainer scope can cover re-checking performance after patch releases and changes to extensions or hosting.
  • Ask any partner to confirm what a retainer includes, how performance regressions are reported and who responds to them.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.