O site na nuvem está lento

Este artigo fornece recomendações sobre como melhorar o desempenho do seu Adobe Commerce no site de infraestrutura em nuvem com cargas de tráfego pesado e como reduzir essa carga.

Versões e edições afetadas

  • Adobe Commerce na infraestrutura em nuvem, todas as versões

Problema

Etapas a serem reproduzidas

  1. Visite sua loja da Adobe Commerce.
  2. Navegar em uma página de categoria.
  3. Adicione um produto ao carrinho.

Resultado esperado

O site é responsivo e adicionar um produto ao carrinho é rápido.

Resultado real

O site está lento ou as páginas de categoria são rápidas, mas a página do carrinho está lenta.

Etapas e soluções de depuração

Execute as seguintes etapas para rastrear o motivo do desempenho lento e corrigi-lo. Você pode alternar a primeira e a segunda etapas, mas prosseguir para o bloqueio de IPs somente se a otimização das configurações de cache não ajudar.

  1. Verifique a taxa de ocorrência do cache para as páginas com alto tráfego e reduza a quantidade de dados altamente atualizados.
  2. Verifique a taxa geral de acertos do cache do site e a configuração geral do cache/Fastly.
  3. Identifique os clientes da Web que estão causando a carga alta do servidor e bloqueie os IPs que estão causando a carga alta.

Os parágrafos a seguir fornecem mais detalhes para cada etapa.

Etapa 1: verifique a taxa de ocorrência do cache para as páginas com alto tráfego

A primeira etapa para corrigir um site atolado em tráfego pesado é garantir que as páginas com o tráfego mais pesado, como a página inicial da loja e as páginas de categoria de nível superior, estejam sendo armazenadas em cache corretamente.

Você pode descobrir as taxas de ocorrência do cache para essas páginas revisando os X-Cache cabeçalhos HTTP usando cURL, conforme descrito em Verificando o cache usando cURL na documentação do Fastly. Ou verifique os mesmos cabeçalhos usando a guia Rede na barra de ferramentas do desenvolvedor do seu navegador da Web favorito.

O Fastly geralmente respeita os cabeçalhos de resposta provenientes do aplicativo; no entanto, se os cabeçalhos estiverem definidos como "não armazenar em cache" e para a página "expirar no passado", o Fastly não poderá armazenar a página em cache.

WARNING
Observe que o Fastly altera os cabeçalhos de resposta, portanto, verificar o URL principal com cURL ou o navegador da web não mostrará necessariamente quais cabeçalhos estão sendo emitidos pelo aplicativo. É comum que o próprio Fastly responda a navegadores da Web com cabeçalhos "sem cache", mas que o próprio aplicativo da Web permita o armazenamento em cache e que o Fastly armazene o item em cache corretamente. Portanto, as informações dos cabeçalhos "cache-control" e "pragma" não serão úteis nesse caso.

Solução de problemas para páginas com alto tráfego

Se a página de índice tiver uma taxa de ocorrência baixa, você poderá corrigi-la reduzindo a quantidade de dados altamente atualizados presentes nessa página.

Etapa 2: verificar a taxa geral de acertos do cache do site

Para verificar a taxa geral de acertos do cache:

  1. Obtenha credenciais do Fastly para seu Adobe Commerce no ambiente de infraestrutura na nuvem.

  2. Execute o seguinte comando cURL do Linux/macOS para verificar a taxa de ocorrência do site nos últimos 30 minutos, substituindo e pelos valores das credenciais do Fastly:

    curl -H "Fastly-Key: " https://api.fastly.com/stats/service//field/hit_ratio?by=minute | json_pp

    Você também pode verificar o histórico das taxas de ocorrência no último dia ou mês alterando a opção de consulta de intervalo de tempo de ?by=minute para ?by=hour ou ?by=day. Para obter mais informações sobre como obter as estatísticas do cache do Fastly, consulte Opções de Consulta na documentação do Fastly.

    A opção | json_pp imprime a saída da resposta JSON usando o utilitário json_pp. Se você receber um erro 'json_pp not found', instale o utilitário json_pp ou use outra ferramenta de linha de comando para obter uma impressão JSON. Como alternativa, exclua o parâmetro | json_pp e execute o comando novamente. A saída da resposta JSON não está formatada, mas você pode executá-la por meio de um beautificador JSON para limpá-la.

Uma taxa de ocorrência acima de 0,90 ou 90% indica que o cache de página inteira está funcionando.

Uma taxa de ocorrência abaixo de 0,85 ou 85% pode indicar um problema de configuração do site ou você pode ter uma extensão de terceiros instalada que não permite que o conteúdo seja armazenado em cache.

Solução de problemas da taxa geral de acertos do cache

  1. Usando as estatísticas de taxa de ocorrência por hora e por dia, identifique quando a taxa de ocorrência começou a diminuir. Se a taxa de ocorrência cair repentinamente ao mesmo tempo em que você implantou uma alteração no site, considere reverter a alteração até que o carregamento do site diminua.
  2. Verifique a configuração no Administrador do Commerce, em Lojas > Configuração > Avançado > Sistema > Cache de Página Inteira. Verifique se o valor de TTL para conteúdo público não está definido como muito baixo.
  3. Verifique se você carregou os trechos de VCL.
  4. Se você usar trechos de VCL personalizados, depure-os para o uso correto das ações "passar" ou "pipe": eles devem ser usados com cuidado e, no mínimo, usados com algum tipo de condição. Para obter mais dicas, consulte Custom Fastly VCL snippets na documentação do desenvolvedor.

Etapa 3: identificar os sites que causam a alta carga do servidor

Você pode usar qualquer um dos métodos a seguir para obter informações sobre os endereços IP que acessam sua loja da Adobe Commerce.

  • Verifique os logs de acesso HTTP por meio de uma sessão SSH.
  • Entre em contato com o suporte da Adobe Commerce para solicitar uma lista de endereços IP que causam grande carga no site.

Verificar os logs de acesso HTTP

Para exibir o log de acesso do site, execute o seguinte comando no ambiente de desenvolvimento local:

magento-cloud log access

Exibir mais linhas com o

--lines

, por exemplo:

magento-cloud log access --lines=500

Você pode visualizar esse log e verificar se uma grande parte das solicitações vem de um endereço IP específico. Outra maneira é usar o awk, sort e uniq para contar automaticamente os endereços IP mais frequentes no log, como o seguinte:

magento-cloud log access --lines 2000 | awk '{print $1}' | sort | uniq -c | sort
  -nr

Se a variável

magento-cloud log

comando não funciona, você pode se conectar ao servidor remoto com SSH e verificar o arquivo de log em /var/log/access.log

Depois de identificar os endereços IP que estão causando grande carga no servidor, você pode bloqueá-los configurando uma lista de bloqueios de IP no painel Administrador do Commerce, em Lojas > Configuração > AVANÇADO > Sistema > Cache de Página Inteira > Configuração Rápida > Bloqueio.

Se não conseguir acessar o Administrador devido à grande carga, você poderá usar a API do Fastly para configurar as regras de bloqueio:

  1. Crie a ACL conforme descrito no documento Trabalho com ACLs usando a API do Fastly.

  2. Na seção recv, crie um trecho de VCL com o seguinte conteúdo, tendo substituído ACL_NAME_GOES_HERE pelo nome da ACL criada na etapa anterior:

    code language-none
    if( req.http.Fastly-Client-IP ~ ACL_NAME_GOES_HERE ) {
    error 403 "Forbidden";
    }
    

Para obter mais informações sobre o bloqueio de endereços IP, consulte o Guia do módulo do Fastly Adobe Commerce no GitHub.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a