Vejo várias pessoas reclamando da velocidade do Magento 2 para colocar uma loja em produção (termo utilizado quando a loja esta apta para vendas), quando eu verifico o problema normalmente as lojas não estão seguindo as recomendações básicas para otimização, por conta disso eu trouxe hoje para vocês dicas de como otimizar seu Magento 2 .

1 - Configurações do servidor

As seguintes configurações devem ser aplicadas ao seu servidor de produção e estão ordenadas por impacto de performance.

  • Varnish cache
  • PHP 7
  • Use Solr e Solr Search Adapter (Apenas na versão Enterprise)
  • Nginx e PHP-FPM

Para implementação em multi-server ou para lojas que planejam escalar seu negócio é recomendado:

  • Redis para sessões (para Magento maior que 2.0.6)
  • Uma instância Redis separada para seu cache padrão
  • Não use essa instância para Page Cache

2 - Otimizando seu Composer

Após executar o comando php bin/magento setup:di:compile para gerar as classes, use seu composer para otimizar o autoloader. Execute o seguinte comando para gerar uma um mapa de classes otimizado para o composer que suporta um rápido auto-loading.

composer dump-autoload -o

3 - PHP no servidor

É recomendado também editar seu PHP OPCache para o máximo de performance, para isso edite seu arquivo opcache.ini.

opcache.enable_cli=1
opcache.memory_consumption=512
opcache.max_accelerated_files=100000
opcache.validate_timestamps=0
opcache.consistency_checks=0

Mas caso você tenha pouca memória no server e também não tenha muitas customizações e extensões, então você pode trocar essas duas configurações abaixo para obter o mesmo resultado em desempenho.

opcache.memory_consumption=64
opcache.max_accelerated_files=60000

4 - Perfomance do Magento 2

Ative essas configurações abaixo para obter um desempenho maior na resposta da instância que está instalada seu Magento 2.

Stores -> Configuration -> Advanced -> Developer

Nessa rota acima altere as seguintes opções:

Stores -> Configuration -> Advanced -> Developer

Stores -> Configuration -> Sales -> Sales Emails

Altere essa configuração abaixo para ativar o modo assíncrono.

Stores -> Configuration -> Sales -> Sales Emails

Stores -> Index Management

Altere todos os indices para o modo Update on Schedule.

5 - MySQL e Index no servidor

No Magento 2.2 você pode customizar a maneira como ele executa o processo de reindexação, por exemplo, se vocês estiver preparando uma loja para um cliente B2B de médio porte pode substituir o valor da variável batchRowsCount em app/code/Magento/catalog/etc/di.xml de 5000 para 1000 e dessa maneira diminuir o tempo de uma indexação completa de 4 horas para 2 horas, é necessário mudar a configuração do seu MySQL também editando as duas variáveis TMP_TABLE_SIZE e MAX_HEAP_TABLE_SIZE (por padrão são 16M as duas) para um valor maior, isso resultará em um uso maior de memória do seu servidor.

6 - Limite de memória

O Magento 2 vem com um limite de memória em dois arquivos o .user.ini para versões mais novas e no .htaccess, ambos ficam localizados na raiz da instalação, para aumentar o limite de memória basta usar o Control+F e procurar por memory_limit e então colocar um 2 na frente do limite existente, dessa maneira ficará 2768M.

7 - Modo de produção

Executando o comando abaixo é possível otimizar a maneira como o Magento 2 efetua o seu processamento, voltando sua performance para produção, para isso execute o comando abaixo:

php bin/magento deploy:mode:set production

Gostou das dicas? Tem mais sugestões de performance? Então deixe sua sua sugestão e opinião nos comentários abaixo.