Nesse artigo vou te apresentar alguns caminhos que você pode seguir para otimizar o magento 2, bem como a infraestrutura onde ele está hospedado.
Esse artigo é um guia, e será atualizado constantemente.
Algumas das atividades vai exigir:
- Acesso SSH a hospedagem
- Acesso root ao servidor de hospedagem
- Breve conhecimento sobre Linux
- Breve conhecimento sobre NGINX PHP-FPM MySQL
Realize um backup completo do seu servidor/código/banco antes de realizar qualquer atividade aqui descrita!
Principais problemas de desempenho e velocidade no Magento 2
O Magento 2 é uma plataforma muito versátil e repleta de possibilidades. No entanto, se você já está começando a trabalhar com a plataforma, certamente já notou alguns problemas de performance.
Problemas mais comuns:
- Problemas com alto uso de CPU
- Problemas com alto uso de RAM
- Problemas no carregamento da página, produtos, categorias
- Quedas após executar alguma ação em massa
- Quedas após fazer uploads de imagens
- Quedas após fazer importação de produtos
- Dificuldade em escalar
- Administração ou central do cliente lenta
- E muito mais..
Uma loja rápida traz resultados positivos, pois melhora o posicionamento nos mecanismos de buscas (SEO), e aumenta consideravelmente as vendas e satisfação do cliente, uma vez que ele consegue navegar na loja sem problemas de performance.
O que fazer para melhorar a performance do magento 2 ?
Não existe uma receita que pode ser replicada em toda e qualquer loja magento 2. Melhorar a velocidade e performance realmente é delicado, pois envolve código e infraestrutura.
Código ruim, mal feito, com bugs, certamente irá impactar na performance da loja. Por outro lado, um servidor sem as devidas otimizações fará com que sua loja também tenha uma velocidade horrível.
Esse artigo servirá como um roadmap básico de tarefas que podem ser realizadas para maximizar a velocidade da sua loja Magento 2.
Hospedagem ou servidor ideal para Magento 2
Logo no processo de desenvolvimento de um e-commerce magento 2, é preciso pensar nas expectativas do negócio.
Se sua loja tem um budget pequeno e a expectativa de vendas e fluxo de clientes mensalmente é pouco, você terá um caminho (A), a percorrer. Se sua loja tem um budget alto e a expectativa de vendas e fluxo de clientes mensalmente será algo grande, você terá um caminho (B), a percorrer.
Hospedagens para Magento 2 pequeno porte: Cloudways, Configr,
Hospedagens para Magento 2 de médio e grande porte: Amazon AWS, Google Cloud, DigitalOcean
Hospedagem de lojas de médio e grande porte em um cloud provider exige que você contrate um parceiro especializado para que seja implementado a infraestrutura magento 2 na nuvem.
Hospedagem de lojas de pequeno porte é mais simples, poucos recursos e menos controle você terá. Mas de prioridade a provedores que oferecem discos SSD ou NVMe, mais de 4GB de memória RAM, mais de 2 núcleos de CPU e acesso SSH.
Otimizações Web Server Magento 2
Se você tem controle administrativo a seu servidor de hospedagem magento 2, você pode realizar uma série de customizações e otimizações. Mas é muito importante que saiba o básico sobre linux e os softwares abaixo.
Otimizando o Nginx
Muitas instalações Nginx estão com os parâmetros default, e isso impacta diretamente na velocidade e capacidade de atender as requisições dos clientes.
No nginx vamos otimizar dois arquivos importantes que são: nginx.conf e os server blocks “virtualhost” configurado.
O arquivo nginx.conf é um arquivo de texto que contém uma série de diretivas de configuração do NGINX. Cada diretiva é composta por um nome e um valor, e elas são usadas para configurar vários aspectos do funcionamento do NGINX. Algumas diretivas são aplicáveis ao NGINX como um todo, enquanto outras só são aplicáveis a um determinado contexto, como um servidor virtual ou uma localização.
nginx.conf https://github.com/alejunio/guia-otimizacoes-magento2/blob/main/Nginx/nginx.conf
Os “server blocks” são uma das principais funcionalidades do NGINX que permitem que você configure vários sites diferentes em um único servidor. Eles funcionam de maneira semelhante aos virtual hosts do Apache, permitindo que você atribua um conjunto de configurações a cada site.
Server Blocks: https://github.com/alejunio/guia-otimizacoes-magento2/blob/main/Nginx/m2.conf
Otimizando o PHP-FPM e PHP.INI do Magento
PHP-FPM (FastCGI Process Manager) é um módulo de gerenciamento de processos para o PHP. Isso pode ajudar a melhorar o desempenho e a escalabilidade do site PHP. A grosso modo, o PHP-FPM permite que você gerencie de forma mais eficiente os processos PHP, incluindo a possibilidade de limitar o número de processos PHP em execução e o uso de memória.
A não otimização do PHP-FPM pode ocasionar sérios problemas de CPU e Memória no Magento 2.
- www-conf: https://github.com/alejunio/guia-otimizacoes-magento2/blob/main/PHP/www.conf
- php.ini *execute todos os comandos sed*: https://github.com/alejunio/guia-otimizacoes-magento2/blob/main/PHP/php.ini
Banco de Dados MySQL
Muitas lojas Magento 2 sofrem com o banco de dados, principalmente pelo alto número de SKUs e informações que o banco armazena. Algumas tarefas praticamente fazem o consumo da CPU bater 100% ocasionando o travamento do banco de dados.
Existem algumas coisas que você pode fazer para otimizar o MySQL para o Magento 2.
- Utilizar a versão mais recente do MySQL compatível com o Magento
- Ativar o cache de querye: Acelera e otimiza as consultas ao banco
- Otimizar o esquema do banco de dados
- Utilizar o cache de página com Redis ou Varnish, pois eliminará muitas consultas ao banco de dados.
Otimização do my.cnf
Veja uma sugestão de arquivo my.cnf semi otimizado para banco de dados MySQL 8. Isso não garante que todos os problemas serão resolvidos, uma vez que precisa ser reajustado para cada realidade de servidor com base na RAM existente.
https://github.com/alejunio/guia-otimizacoes-magento2/blob/main/MySQL/my.cnf
Banco de dados Externo
Se mesmo após otimizar o banco de dados local, os problemas de desempenho com o banco de dados persistirem, a solução vai ser implementar um servidor de banco de dados externo.
Quando você implementa um banco de dados externo, você distribui a responsabilidade e carga do ambiente. Imagine ter um servidor exclusivo somente para o banco de dados, e agora imagine o servidor atual que contém todos os softwares consumindo recursos ao mesmo tempo.
Migrar o banco para outro local será a solução de muitos problemas e gargalos.
Cache de Página e Sessão com Redis
Redis é um banco de dados de chave-valor de código aberto. Ele é usado como um cache para acelerar aplicações e também como um banco de dados de alta performance para armazenar dados estruturados.
Cachear dados de frontend ou backend do Magento 2 utilizando o Redis, vai acelerar o tempo de carregamento e nos trazer muito poder de performance.
Para utilizar esse serviço você precisa ter o Redis instalado no seu servidor. Se você já possui o Redis, basta habilita-lo. Em algumas lojas Magento 2 acabamos implementando o Redis em servidores externos ou usando tecnologias como o AWS Elasticache.
Cache de Backend e Full Page Cache Magento 2
O cache de backend no Magento 2 pode trazer vários benefícios, incluindo: melhoria no desempenho do sistema, redução do tempo de carregamento da página e redução da carga do servidor.
Para habilitar o cache pelo terminal com o Redis no Magento 2 acesse o terminal e vá para a pasta raiz do seu site Magento 2.
Rode os comandos abaixo:
php bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
php bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=2
php bin/magento cache:clean
php bin/magento cache:flush
Agora o Redis está cacheando o backend do seu magento 2.
Cache de Sessão
O cache de sessão é um tipo de cache que armazena a sessão dos usuários para que possam ser recuperados rapidamente sem que a requisição atinja ou consuma recursos do banco de dados.
Para habilitar o cache de sessão com o Redis no Magento 2 pelo terminal, execute os comandos abaixo:
php bin/magento setup:config:set --session-save-redis-db=4
5 Comentários
Muito boa noite,
ao procurar ajuda na internet, relativamente ao meu site que está muito lento deparei-me com a sua informação relativamente á plataforma magento.
Eu tenho um site magento 2.3.4 hospedado na A2 Hosting (Turbo Boost Web Hosting) que está muito lento, e procuro ajuda de um profissional que me resolva o problema no sentido de o tornar mais rápido.
Caso tenha interesse agradeço o seu contato.
Olá Jose, enviei um e-mail para você.
Obrigado, me deu um norte enorme.
Obrigado pelo conteúdo. Na guia: “Otimização do PHP no Servidor”, não tenho a mínima ideia do que fazer.
Olá, obrigado! Você só vai conseguir se tiver acesso root ao servidor, mas de todo modo, aconselho estudar um pouco sobre PHP-FPM e configurações no php.ini antes de realizar qualquer alteração. Também deve saber trabalhar com o terminal linux! Abs