Cursos Magento

Magento lento? Esta pode ser a razão. Finja surpresa! (Erramos!)

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:

phpinfo no Magento 2

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”.

memory_limit do Magento 2 via phpinfo
Neste exemplo, apesar do nosso ambiente ter 12G, o Magento está usando somente 756M.

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.

Amostra do .htaccess

“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.

Busca por .htaccess em arquivos .php no Magento 2

.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.

.user.ini alterando memória do Magento

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.

nginx.conf alterando valor de memória do Magento 2

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.

Busca de arquivos do PhpStorm

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.

Últimos posts por Ricardo Martins (exibir todos)
Assuntos: | | |
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/magento-lento-motivo-e-solucao/"]