Magento lento? Esta pode ser a razão. Finja surpresa! (Erramos!)
Magento 2
Atualizado em 01 de março de 2022
Você fez tudo certo, tem um monte de memória disponível no servidor ou no ambiente local, e mesmo assim seu Magento 2 está extremamente lento.
Ou a loja já está em produção, e mesmo assim, apesar do servidor estar ocioso o Magento está lento. Tem memória e processador sobrando, você escolheu uma hospedagem especializada em Magento, mas mesmo assim o resultado é deprimente.
Já falei sobre isso no Magento 2: O Curso e em outros cursos por aqui, mas vou te dar a notícia ruim…
Seu Magento não está usando a quantidade de memória que você pensa
Você acha que só porque configurou seu php.ini com 40Gb de RAM o Magento ficará mais rápido? Não é bem assim.
Vamos a um rápido exercício…
Assumindo que você instalou o Magento corretamente, ou seja, mapeou a pasta pub/
como sendo a porta de entrada das requisições da sua loja, o primeiro arquivo a ser lido é o pub/index.php
.
Sendo assim, abra este arquivo e adicione phpinfo();
na última linha dele. Ficará algo assim:
Note que ao fazer isso sua loja não funcionará mais como esperado. Esta deve ser uma mudança temporária.
Em seguida, acesse qualquer página da sua loja e busque por “memory_limit”.
Surpresa!
Mesmo que seu php.ini e até mesmo seu ambiente esteja configurado para usar um valor maior de memória, é muito provável que seu Magento esteja usando somente 756M de memória.
Como alterar as configurações de memória do Magento
O Magento conta com vários arquivos auxiliares que sobrescrevem as configurações dos servidores. Conheça alguns deles.
.htaccess (com nginx)
O mais comum deles é o .htaccess
, localizado em diversas pastas do Magento. Estes arquivos contém configurações que sobrescrevem os valores configurados no php.ini
, incluindo o memory_limit
.
“Ahh, mas eu uso nginx. Nem preciso olhar o .htaccess”
Desenvolvedor desavisado
Apesar dos arquivos .htaccess
só serem lidos em ambientes apache, o Magento contorna a situação pra “ajudar” quem está usando nginx. Ou seja, não ignore as configurações e otimizações feitas no .htaccess
mesmo em ambientes com nginx. Nunca saberemos quando o Magento vai ler eles, inclusive em versões futuras.
.user.ini
Outro arquivo usado pelo Magento é o .user.ini
. Este é um recurso suportado desde o PHP 5.3 (Veja Doc. Oficial) e permite sobrescrever parâmetros do php.ini. E como você pode imaginar isso inclui o memory_limit.
nginx.conf
Por fim, se você também usa nginx em seu Magento já deve ter notado que temos um arquivo chamado nginx.conf.sample
na pasta raiz do Magento.
Ele é usado como base na maioria dos servidores Magento mundo afora, muitas vezes sendo lido a partir da raiz do nosso próprio Magento.
Nele também podemos encontrar várias ocorrências que sobrescrevem o valor do memory_limit
do php, alterando este valor para 756M
.
Errata / Update
A diretiva memory_limit
refere-se ao limite máximo de memória utilizado por cada processo PHP a ser executado. Aumentar este número não fará com que um processo PHP carregue mais rápido. Apenas evitará erros de estouro de memória.
Eventualmente, se sua loja possuir muitos módulos problemáticos e que consomem mais memória do que deveriam, aumentar significativamente o memory_limit pode levar a outros problemas em momentos de pico de acesso.
Por tanto, reconsidere nossa conclusão e dicas expostas aqui.
Conclusão
O Magento tentou garantir compatibilidade com diversos cenários e configurações, e fez isso utilizando configurações e práticas pouco populares em outros frameworks.
Isso eventualmente se torna um revés para desenvolvedores menos experientes ou desavisados.
Aumentar a memória do PHP e garantir que o Magento está usando a configuração correta é apenas uma das coisas que você pode fazer para melhorar a performance do seu Magento.
No artigo acima e no Magento 2: O Curso eu mostro como configurar uma loja Magento 2 que responde em 1,5 segundo em um servidor de $10. Memory_limit é apenas uma das etapas.
Pessoalmente, toda vez que configuro uma nova loja em ambiente de desenvolvimento, ao invés de decorar onde estão os arquivos que preciso mudar, apenas faço uma busca geral por “756M” em todos os arquivos e altero aqueles que são relevantes.
Note que não são todos os arquivos que devemos alterar. Aqui estão incluídos arquivos de testes unitários, arquivos da pasta /vendor
e outros que devemos ignorar.
Esta ação que leva apenas alguns segundos certamente salvará muitos minutos de espera ao longo do desenvolvimento e customização de uma loja.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/magento-lento-motivo-e-solucao/"]