Encontrando queries lentas no Magento 2
Desenvolvimento, Magento 2
Atualizado em 24 de agosto de 2022
Queries e scripts SQL podem deixar lojas e aplicações mais lentas. No Magento isso não é diferente.
Como logar queries no Magento 2?
Para habilitar o log de queries no Magento, usamos o seguinte comando:
bin/magento dev:query-log:enable
(e depois bin/magento cache:flush
)
Este comando logará todas as queries que levam mais de 0.001 segundo para ser executada e trará toda cadeia (call stack) de código que foi chamado até o momento da execução da query.
Onde o log do SQL é salvo?
Por padrão, o Magento salvará as informações das execuções no syslog
. No entanto, em alguns sistemas operacionais, ou quando a opção do syslog estiver desabilitada, o Magento salvará as informações em <pastamagento>/var/debug/db.log
.
A partir do Magento 2.3.1 você pode pedir para que o Magento não salve as informações no syslog digitando bin/magento config:set dev/syslog/syslog_logging false
.
Logando queries lentas apenas
Se você olhou o seu db.log depois de ativar o log, provavelmente ficou surpreso com a quantidade de coisas gravadas lá. Por isso, o Magento permite logar somente queries que realmente estão demorando mais. Isso pode ser feito através do parâmetro --query-time-threshold
.
Exemplo:bin/magento dev:query-log:enable --query-time-threshold=0.002
Além disso, também é possível não gravar o stack trace das consultas com o parâmetro --include-call-stack=false
.
Outras opções de log de queries
$ bin/magento dev:query-log:enable --help Description: Enable DB query logging Usage: dev:query-log:enable [opcoes] Options: --include-all-queries[=INCLUDE-ALL-QUERIES] Logar todas as consultas. [true|false] [default: "true"] --query-time-threshold[=QUERY-TIME-THRESHOLD] Não logar queries com tempo menor que este. [default: "0.001"] --include-call-stack[=INCLUDE-CALL-STACK] Incluir caminho até a execução. [true|false] [default: "true"] -h, --help Mostra esta mensagem -q, --quiet Não mostra nenhuma saída -V, --version Mostra a versão desta aplicação --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
As demais opções são um tanto auto explicativas, e eu traduzi algumas pra facilitar o entendimento.
Exemplo de uso
No vídeo abaixo habilitamos o log de queries no Magento 2, e usamos o comando tail -f
para exibir qualquer coisa que é adicionada ao final do arquivo var/debug/db.log
.
Note que por estar no Mac, o Magento não gravará no syslog. De qualquer forma, eu havia desabilitado a opção antes como mostrado acima.
Conclusão
O Magento 2 traz uma série de desafios na criação do ambiente e hospedagem. Quando falamos do ambiente de desenvolvimento este problema pode ser ainda maior e mais complexo.
As queries geralmente não são o principal fator de lentidão de lojas Magento 2. Ausência de Disco SSD, pouca memória RAM, utilização incorreta do Redis, configuração da loja, uso de HTTP/1.x, e hospedagem de baixo custo/qualidade podem ser alguns dos problemas de lentidão da sua loja.
A escolha da hospedagem é um fator importante quando falamos de lojas nesta versão. Confira o nosso guia com a lista de hospedagens especializadas em Magento e o nosso teste com a loja que voa na infra de $10.
Quando o assunto é lentidão no ambiente de desenvolvimento, uma série de ferramentas e melhorias podem ajudar. Várias delas são explicadas no Magento 2: O Curso, e frequentemente discutidas no grupo exclusivo de alunos.
Lembre-se de desligar
Lembre-se de desativar o a gravação de queries assim que terminar seu trabalho. Este recurso aumenta o tempo de execução do Magento e pode criar arquivos gigantes em poucos minutos em uma loja em produção.
bin/magento dev:query-log:disable
- 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/encontrando-queries-lentas/"]