Disponível apenas em clusters M10+
O Query Profiler diagnostica e monitora problemas de performance. Esse monitoramento pode expor queries de execução lenta e suas principais estatísticas de desempenho na IU do Atlas.
O Atlas coleta e exibe estatísticas de qualquer uma de suas instâncias mongod
. O Analisador de query identifica queries lentas com base nosdados de registro de suas instâncias mongod
. O Atlas exibe esses dados na aba Query Insights na seção Query Profiler de uma instância.
Observação
O Analisador de query é diferente do Database Profiler. O Criador de Perfil de Consulta identifica queries específicas ineficientes com base em entradas de seus logs do mongod
. O Database Profiler retorna informações detalhadas sobre os comandos executados no mongod
com base no nível de criação de perfil especificado. Alterar o nível de perfil não impacto as consultas lentas exibidas no Criador de perfil de consulta.
O Atlas Query Profiler mostra operações em todo o cluster por padrão. Você pode filtrar os hosts para quais operações o Analisador de query exibe dados com o menu suspenso Filter by Hosts, que permite visualizar dados relacionados a um ou mais hosts específicos ou exibir grupos de hosts primários ou secundários. A guia Query Insights exibe informações para revelar operações de banco de dados lentas em um período de tempo definido, como o seguinte:
Operation Execution Time
Docs Examined : Returned Ratio
O Atlas Query Profiler suporta operações de agrupamento do mesmo tipo em execução na mesma coleção em torno do mesmo carimbo de data/hora para suportar ponto de dados adicionais.
Para suportar ponto de dados adicionais, o Atlas Query Profiler suporta operações de agrupamento que atendem aos seguintes critérios:
As operações são do mesmo tipo de operação.
As operações estão em execução no mesmo namespace.
As operações têm valores booleanos
hasSort
eusedIndex
correspondentes.As operações são executadas em torno do mesmo registro de data e hora.
O Atlas gerencia o limite de operações lentas para cada host mongod
com base no tempo médio de execução da operação nesse host. Este limite pode ser alterado utilizando o comando db.setProfilingLevel
mongosh
.
Observação
A alteração do limite para operações lentas usando db.setProfilingLevel
pode afetar o desempenho e as configurações de log do sistema. Considere cuidadosamente quaisquer implicações de desempenho e segurança antes de usar db.setProfilingLevel
para ajustar as configurações do Analisador de query em uma implantação de produção. As configurações do Analisador de query são redefinidas para os valores padrão após a reinicialização de um nó.
Além disso, aumentar o zoom no eixo x do gráfico de dispersão buscará novamente as operações lentas e poderá fornecer fidelidade mais detalhada das operações lentas durante o período de tempo selecionado.
Observação
Para recusar o limite de operação lento gerenciado pelo Atlas e utilizar um limite de query lento fixo de 100 milissegundos em vez disso, utilize a API de Administração do M0
Atlas . Consulte desabilitar limite de operação lenta gerenciada. Para clusters, clusters Flex e instâncias sem servidor, o Atlas desabilita o limite de operação de query lenta gerenciada pelo Atlas por padrão e você não pode habilitá-lo.
Considerações
Importante
Leia as seguintes considerações antes de habilitar o Analisador de query.
Segurança
Os dados de perfil podem incluir informações confidenciais, incluindo o conteúdo de query ao banco de dados. Certifique-se de que a exposição desses dados ao Atlas seja consistente com suas práticas de segurança da informação.
Limitações de análise de dados
O Analisador de query exibe aproximadamente 100.000 logs de amostra por vez. Ele mostra todos os logs se 100.000 ou menos logs foram registrados nos hosts selecionados e no intervalo de tempo.
Limitações de exibição de dados
O Atlas exibe não mais do que 100.000 pontos de dados nos gráficos Query Profiler .
Os dados de registro são processados em lotes. Os dados podem ser atrasados em até cinco minutos a partir de tempo real.
Quantidade de registros
Se um cluster experimentar um pico de atividade e gerar uma quantidade extremamente grande de mensagens de log, o Atlas poderá parar de coletar e armazenar novos registros por um período de tempo.
Observação
Os limites da taxa de análise de log se aplicam somente à IU do Performance Advisor, à IU do Query Insights, à IU do Access Tracking e à IU do Atlas Search Query Analytics. Os arquivos de log que podem ser baixados estão sempre completos.
Operações $lookup de alta latência
Algumas operações de alta latência $lookup
não geram um registro de queries lentas para a collection externa. Isso pode ocorrer porque os registros de query lentos correspondem a operações que são relatadas no Analisador de Query, enquanto as métricas de latência incrementam somente quando um bloqueio de coleção é adquirido.
Se a query do $lookup
em um shard puder executar uma leitura local, o $lookup
não registrará uma operação separada para query da collection externa. Uma leitura local refere-se a quando a query na collection externa tem como alvo apenas o mesmo shard em que a operação atual está sendo executada. Como resultado, a operação $lookup
aumenta as métricas de latência e as contagens de operações do Namespace Insights, mas não gera um registro de queries lentas para a collection externa.
Acesso necessário
Para habilitar ou desabilitar o Performance Advisor e o profiler de query para um projeto, você deve ter a função Project Owner
para o projeto ou a função Organization Owner
em sua organização principal.
Para visualizar o desempenho da query no Analisador de query, você deve ter Project Read Only
acesso ou Project Observability Viewer
ao projeto.
Habilitar e desabilitar o Analisador de query
O Atlas habilita o Analisador de query por padrão.
Para desabilitar o Profiler de query:
No Atlas, acesse a página Project Settings.
AVISO: Melhorias de navegação em andamento
No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Ao lado do menu Projects, expanda o menu Options e clique em Project Settings.
A página Configurações do projeto é exibida.
Encontrar queries lentas com o analisador de query
A seção a seguir descreve como encontrar queries lentas usando o Analisador de query.
Acesse o Analisador de query.
No Atlas, acesse a página Clusters do seu projeto.
AVISO: Melhorias de navegação em andamento
No momento, estamos implementando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na IU do Atlas, consulte a documentação de pré-visualização.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Clique no botão View Monitoring para o cluster.
Clique na aba Query Insights.
Clique na aba Query Profiler.
O Analisador de query exibe todos os seus dados do log nos nós primário e secundário por padrão.
Personalize o Analisador de query.
O Analisador de query usa um gráfico de dispersão e uma tabela diretamente abaixo do gráfico para ajudá-lo a encontrar operações lentas.
Selecione um ou mais hosts para os quais deseja visualizar métricas no menu suspenso Filter by Hosts.
Selecione o período de tempo nos menus suspensos Time Range ou Filter by Date and Time. O Analisador de query exibe dados das últimas 24 horas por padrão.
Selecione a métrica no menu suspenso Operation Execution Time. As opções incluem:
Operation Execution Time (padrão): o tempo total, normalmente em milissegundos, que uma operação do banco de dados MongoDB levou para ser concluída.
Response Length: o tamanho dos documentos ou dados retornados pelo banco de dados em resposta a uma operação, medido em bytes.
Docs Examined: o número total de documentos digitalizados dentro da collection para encontrar os resultados de uma query.
Docs Returned: o número de documentos que corresponderam aos critérios de query que o Atlas retornou para a query.
Keys Examined: o número total de entradas de índice verificadas pelo banco de dados durante a execução da query.
Num Yields: o número de vezes que uma operação foi pausada para permitir que outras operações continuassem.
Docs Examined : Returned Ratio: a proporção calculada dividindo Docs Examined por Docs Returned.
Keys Examined : Returned Ratio: a proporção calculada dividindo Keys Examined por Docs Returned.
Clique no menu suspenso All operation types para alterar quais operações você deseja criar o perfil. O analisador de query exibe todos os tipos de operação por padrão.
Identifique queries lentas.
Clique em um ponto de dispersão no gráfico. Isso abre um painel do lado direito com informações resumidas.
Clique em View more details no painel do lado direito para visualizar a forma de query completa, estatísticas de execução detalhadas, registro de consulta e sugestões para melhoria.
Clique e arraste ao longo dos eixos
X
eY
para ampliar um subconjunto específico dos dados coletados.Role para baixo até a tabela abaixo do gráfico para visualizar uma lista de consultas lentas por coleção. Clique em uma linha da tabela para obter mais detalhes.
Interpretar métricas de desempenho.
Ao inspecionar uma query lenta, comece examinando estas principais métricas e padrões:
Operation Execution Time (
millis
): Tempo de query em milissegundos. Este é o principal indicador de uma query lenta. Se essa métrica for consistentemente alta, considere otimizar a lógica da query, agrupar os resultados ou repensar como os dados estão sendo acessados.Se você vir
"planSummary": "COLLSCAN":
no registro de queries, a query executou uma verificação de collection e não usou um índice. Este é um sinal forte para adicionar um índice ou reescrever a query.Docs Examined (
docsExamined
): número de documentos que o MongoDB inspecionou para a query. Se Docs Examined for significativamente maior que Docs Returned, isso geralmente significa que:A query digitalizou muitos documentos para encontrar os resultados, o que pode impacto a latência da rede e o desempenho dos aplicação .
Os índices existentes são ineficientes ou não são ideais para essa query específica. Para saber mais, consulte Índices.
Keys Examined
keysExamined
(): número de chaves de índice verificadas para a query. Se essa métrica for0
para uma query que inclui condições de filtro, é altamente provável que não haja índice e o MongoDB verificou toda a collection. Essa é a principal causa de lentidão. Se Docs Examined for muito alto e for Keys Examined0
ou muito baixo em comparação Docs Examined com, você provavelmente está examinando a coleção ou um índice muito não seletivo. Para saber mais, consulte Índices.Um Docs Examined : Returned Ratio alto significa que a query está verificando muitos documentos para retornar poucos resultados, o que pode ser um sinal de uma query ineficiente ou de índices ausentes.
Num Yields (
numYields
): os rendimentos frequentes sugerem a contenção de recursos ou operações de longa duração que estão pausando, potencialmente afetando a taxa de transferência geral.Response Length: comprimentos de resposta incomumente grandes indicam que as queries estão retornando mais dados do que o necessário. Considere usar projeções para limitar os campos retornados.
Has Index Coverage
usedIndex
(): este booleano confirma se um índice foi utilizado. Se configuradofalse
para uma query que deve ser indexada, adicione um índice.Se
hasSort
estiver configurado paratrue
, isto indica que a query contém um métodosort()
. Os métodossort()
não indexados podem consumir muitos recursos. Verifique a configuração do índice de pesquisa e confirme se ela permite o métodosort()
.