Por que o Magento fica lento em produção
O Magento 2 é uma plataforma poderosa e complexa. Essa complexidade tem um custo: existem dezenas de variáveis que podem degradar a performance em ambiente de produção, muitas delas silenciosamente. Uma loja que rodava bem durante os primeiros meses pode começar a apresentar lentidão crescente sem nenhuma mudança óbvia de código.
A boa notícia é que a maioria dos problemas de performance no Magento 2 tem um padrão. Depois de diagnosticar dezenas de lojas, as mesmas 7 causas aparecem repetidamente — e todas elas podem ser identificadas com ferramentas nativas do próprio Magento.
1. Full Page Cache mal configurado ou desativado
O Full Page Cache (FPC) é o mecanismo mais poderoso de performance no Magento 2. Quando está funcionando corretamente, páginas servidas pelo cache carregam em menos de 100ms. Quando está ausente ou mal configurado, o Magento precisa gerar cada página do zero — queries ao banco, processamento de PHP, renderização de Liquid, tudo a cada request.
Como verificar: No terminal do servidor, execute:
php bin/magento cache:status
Se full_page aparecer como 0 (desativado), esse é seu problema número um. Ative com:
php bin/magento cache:enable full_page
Além de estar ativado, o FPC precisa estar configurado com Varnish em produção para ter o impacto real. O cache nativo do Magento (filesystem) é significativamente mais lento do que o Varnish como reverse proxy.
Caso real: Loja B2B com 800 produtos que estava respondendo em 8–12 segundos por página. Após ativar FPC e configurar Varnish, tempo caiu para 180ms. Nenhuma linha de código foi alterada.
2. Queries lentas no banco de dados
O banco de dados MySQL do Magento 2 pode acumular queries problemáticas ao longo do tempo, especialmente em lojas com muitos produtos, muitos atributos EAV ou tabelas sem índices adequados. Uma única query lenta executada múltiplas vezes por página pode tornar a loja inutilizável.
Como identificar: Ative o slow query log no MySQL adicionando ao my.cnf:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
Após algumas horas de tráfego, analise o log com mysqldumpslow -s t /var/log/mysql/slow.log | head -20. As queries com maior tempo acumulado são suas candidatas prioritárias.
No Magento, queries lentas comuns incluem: filtros de camada (layered navigation) com muitos atributos, relatórios de vendas sem índices, e queries de preço com múltiplos grupos de clientes.
3. Índices desatualizados
O sistema de indexação do Magento recalcula dados como preços, estoques e atributos de produto para tornar as buscas rápidas. Quando os índices estão desatualizados (invalidated), o Magento recalcula em tempo real — o que é exponencialmente mais lento.
Como verificar:
php bin/magento indexer:status
Qualquer indexer com status invalid ou suspended é um problema. Reindexe com:
php bin/magento indexer:reindex
Para evitar que isso aconteça regularmente, configure o modo de indexação como Update by Schedule para todos os indexers:
php bin/magento indexer:set-mode schedule
4. Cron travado ou não configurado
O cron do Magento 2 é responsável por reindexação agendada, envio de emails, limpeza de sessões, atualização de cotações e dezenas de outras tarefas. Quando o cron está travado ou não configurado, essas tarefas acumulam — e quando finalmente executam, sobrecarregam o servidor.
Como verificar:
php bin/magento cron:status
Se você ver muitas tarefas com status pending acumulando, o cron não está rodando. Verifique também a tabela cron_schedule diretamente no banco — mais de 1000 registros é sinal de problema.
Atenção: Não execute php bin/magento cron:run manualmente em produção com backlog grande. Isso pode causar timeout e dupla execução de tarefas. Configure o cron do sistema operacional corretamente e deixe ele processar gradualmente.
5. Imagens sem otimização e CDN ausente
Uma loja Magento 2 com catálogo de produtos extenso frequentemente acumula imagens de alta resolução sem compressão, sem WebP e sem CDN. Cada página de produto pode carregar 10–20 imagens de 2MB+, somando 20–40MB de transfer por pageview.
Solução: Configure o Magento para redimensionar e otimizar imagens automaticamente (Admin → Stores → Configuration → Catalog → Catalog → Image Processing). Ative o cache de imagens e, em produção, use um CDN como Cloudflare ou AWS CloudFront para servir os assets estáticos com edge caching.
6. JavaScript e CSS não minificados e não merged
Em modo de desenvolvimento ou após atualizações incorretas, o Magento pode servir JavaScript e CSS não minificados — dezenas de arquivos separados por request, cada um adicionando latência de rede.
Como verificar e corrigir: Em Admin → Stores → Configuration → Advanced → Developer, certifique-se de que as seguintes opções estão como Yes em produção: Merge JavaScript Files, Minify JavaScript Files, Merge CSS Files, Minify CSS Files.
Após alterar, limpe todos os caches e faça deploy do static content:
php bin/magento setup:static-content:deploy -f
php bin/magento cache:flush
7. PHP-FPM e configurações de servidor subdimensionados
O Magento 2 é exigente em recursos de servidor. Configurações padrão de PHP-FPM frequentemente são insuficientes para tráfego de produção real, resultando em fila de requests e timeouts.
Verifique no /etc/php/8.x/fpm/pool.d/www.conf:
pm = dynamic
pm.max_children = 50 # ajuste conforme RAM disponível
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500 # evita memory leaks acumulados
Além disso, garanta que memory_limit no PHP esteja em pelo menos 2G para o Magento 2, e que opcache está habilitado e com configuração adequada para produção.
Diagnóstico rápido: por onde começar
Se você não sabe por onde começar, use esta sequência:
Verifique o status dos caches e índices
Execute cache:status e indexer:status. Problemas aqui são os mais comuns e os mais fáceis de corrigir.
Consulte os logs do sistema
Verifique var/log/system.log e var/log/exception.log. Erros recorrentes frequentemente revelam o problema de performance.
Ative o New Relic ou Blackfire
Para diagnóstico profundo, essas ferramentas mostram o breakdown de tempo por query, por função PHP e por request. São investimentos que pagam rápido.
Teste uma página com e sem cache
Compare o tempo de resposta com e sem o cabeçalho Cache-Control: no-cache. A diferença revela o impacto do FPC.
Sua loja Magento ainda está lenta após verificar esses pontos?
Faço diagnóstico completo de performance Magento 2 com análise de slow queries, configuração de FPC/Varnish, indexação e infraestrutura. Identifico a causa raiz e entrego um mapa de correção priorizado.