End-to-End Magento 2 Performance Optimization

We've encountered this scenario: a Magento 2 page loading in 8 seconds, each request triggering 300 SQL queries and 60 file operations. Clients leave, conversion drops. The solution isn't just enabling cache—it's building the right stack: CDN → Varnish → Nginx → PHP-FPM 8.2 → MySQL 8.0, each layer t

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1033
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    554

We've encountered this scenario: a Magento 2 page loading in 8 seconds, each request triggering 300 SQL queries and 60 file operations. Clients leave, conversion drops. The solution isn't just enabling cache—it's building the right stack: CDN → Varnish → Nginx → PHP-FPM 8.2 → MySQL 8.0, each layer tuned for the platform. In 6–10 business days we bring TTFB down to 200–500 ms. This article covers proven methods and configurations we use on commercial projects.

A recent case: a store with a 50,000 SKU catalog on shared hosting—pages loaded in 12 seconds, LCP 8 seconds. An audit revealed the “Featured Products” plugin made 150 SQL queries per page. After configuring Varnish and fixing N+1, TTFB dropped to 0.3s, LCP to 1.2s. Comparison: Varnish outperforms Magento's built-in cache 10x in TTFB, and Redis reduces block generation time from 50 ms to 1–2 ms.

Why Magento 2 is Slow

A default installation executes 200–400 SQL queries and 50–100 file operations per page. Typical causes:

  • N+1 problemsafterLoad plugins, collections without addAttributeToSelect, loading products one by one.
  • No Varnish — dynamic content regenerated on every request.
  • MySQL untuned — default buffer 128 MB, redo log 48 MB.
  • PHP without OPcache/JIT — code interpreted on every request.
  • MySQL search — LIKE '%query%' for a catalog of 10,000+ SKUs gives 2–5 second response.

How We Configure the Stack

Varnish

Varnish is a reverse proxy cache that stores full HTTP responses. For anonymous users, hit rate reaches 85–95%. VCL configuration accounts for Magento's architecture: we skip sessions, cart, checkout, and cache everything else.

Redis

Redis is used for cache (config, layout, block HTML, full page cache) and session storage. This eliminates disk I/O and reduces MySQL load. Setup includes separate instances for different data types.

PHP 8.2 + OPcache + JIT

Upgrading to PHP 8.2 yields a 15–25% boost on CPU-bound operations. OPcache with 512 MB memory and JIT in tracing mode accelerates script execution by up to 20%.

; /etc/php/8.2/fpm/conf.d/opcache.ini opcache.enable=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=64 opcache.max_accelerated_files=60000 opcache.validate_timestamps=0 opcache.revalidate_freq=0 opcache.fast_shutdown=1 opcache.enable_cli=1 ; JIT opcache.jit=tracing opcache.jit_buffer_size=256M 
[magento] user = www-data group = www-data listen = /run/php/php8.2-fpm-magento.sock listen.backlog = 65535 pm = dynamic pm.max_children = 40 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20 pm.max_requests = 2000 php_admin_value[memory_limit] = 768M php_admin_value[max_execution_time] = 600 php_admin_value[opcache.file_cache] = /tmp/opcache 

MySQL

InnoDB buffer pool — 70% of server RAM. Redo log 1 GB, flush method O_DIRECT, query cache disabled (mutex kills concurrency). Below is a typical configuration for a 16 GB RAM server.

[mysqld] innodb_buffer_pool_size = 8G innodb_buffer_pool_instances = 8 innodb_log_file_size = 1G innodb_log_buffer_size = 64M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_read_io_threads = 16 innodb_write_io_threads = 16 innodb_thread_concurrency = 0 query_cache_type = 0 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 

Elasticsearch

We replace MySQL search with Elasticsearch — full-text search with relevance, autocomplete, faceted filtering. After reindexing, a search page with 50,000 products responds in 50–150 ms instead of 2–5 seconds.

What to Do About N+1 Queries

Diagnosing N+1 Diagnosis is performed using `n98-magerun2` — we enable query logging, open a page, and analyze the file. Typical sources:
  • afterLoad plugins that issue queries for each collection record
  • EAV attributes without addAttributeToSelect in the collection
  • blocks calling $product->load($id) instead of working with the collection

The correct pattern is to load the collection in one query for all data, not 24+1.

How to Measure Optimization Results

Metric Before Optimization After Optimization
TTFB 3–8 s 0.2–0.5 s
SQL queries 200–400 20–50
LCP >4 s <1.5 s
FCP >3 s <1 s
Search response 2–5 s 50–150 ms

Measurements are done using Chrome DevTools, Lighthouse, Blackfire. For production, we recommend monitoring Core Web Vitals via Search Console and RUM.

How Long Does Optimization Take?

PHP and Varnish tuning — 2–3 days. MySQL and Elasticsearch — 1–2 days. N+1 audit, cron, CDN — 2–3 days. Full optimization — 6–10 business days. We estimate your project within 1–2 days after providing access.

Typical Problems and Their Solutions

Problem Solution Typical Gain
High TTFB Varnish + CDN 10x speedup
Many SQL queries Fix N+1, flat catalog 90% reduction
Slow search Elasticsearch 20–50x faster
Low cache hit rate VCL tuning, exclusions 85–95% hit rate

We guarantee stable results after optimization. With over 8 years of Magento experience and 50+ store acceleration projects completed, contact us for a free audit — we will assess your current performance and propose a plan. Order a turnkey Magento 2 performance optimization — get a measurable boost in conversion and customer satisfaction.