Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / / /

Monitorar queries lentas

O $currentOp estágio de agregação fornece informações sobre todas as operações atualmente em execução no MongoDB. Se seu aplicação estiver com problemas de desempenho, você poderá criar um pipeline de agregação em torno desse estágio para monitorar consultas lentas e problemas semelhantes.

Esta tarefa utiliza o para identificar queries lentas atualmente em execução em seu aplicação. Para encontrar todas as queries lentas dentro de um período especificado, considere usar um $currentOp profiler.

Profiler
Descrição

Analisador de query do Atlas

Fornece um gráfico de dispersão para os clientes do Atlas , facilitando a identificação de queries lentas e outliers de desempenho.

Armazena informações de desempenho de query em uma collection, permitindo que você consulte o MongoDB para queries com problemas específicos de desempenho.

Tanto o Atlas Query Profiler quanto o profiler de banco de dados podem afetar o desempenho do servidor , usar espaço em disco e expor metadados de query em torno de campos criptografados. Considere as implicações de desempenho e segurança antes de habilitá-las.

Esta tarefa identifica queries com problemas de desempenho. Se você já souber quais queries têm problemas de desempenho, consulte Explicar queries lentas para resolvê-los.

1

Use o $currentOp estágio de agregação para recuperar as operações atuais do MongoDB:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true } },
{ $match: { secs_running: { $gt: 2 } } },
{ $sort: { secs_running: 1 } }
] )
[
{
"opid": "12345",
"secs_running": 5,
"active": true,
"ns": "sample_mflix.movies",
"command": {
"find": "movies",
"filter": { "title": { "$regex": "The" } }
},
"planSummary": "COLLSCAN",
"locks": { ... },
"client": "203.0.113.25:43210"
}
]

Este pipeline de agregação recupera todas as operações atuais no cluster. O $match estágio de agregação filtra as operações para aquelas que estão sendo executadas há mais de dois segundos. Isso permite a você filtrar as queries executadas dentro de um período especificado. Ajuste o valor para atender às necessidades do seu aplicação e banco de dados .

O estágio classifica os resultados em ordem crescente de tempo de $sort operação.

2

Visualize o campocurrentOp.active . Se currentOp.active for true, MongoDB indica que a operação está atualmente em execução.

Para interromper uma operação de longa duração, use o método para interromper db.killOp() o opid fornecido.

3

Visualize o campocurrentOp.waitingForLock . Se currentOp.waitingForLock estiver true, outra operação em execução no servidor ou cluster estará bloqueando a query.

Para interromper uma operação bloqueada, use o método para interromper db.killOp() o opid fornecido.

4

Verifique o valor no currentOp.planSummary campo.

IXSCAN
Indica que a query executou uma verificação de índice.
COLLSCAN
Indica que a query executou uma verificação de collection. Para corrigir isso, crie um índice.
5

Se o $currentOp estágio de agregação retornar uma query que exija pesquisa adicional, use o método para analisar o plano de query e a estatística de explain() execução.

Para obter detalhes, consulte Explicar queries lentas.

Voltar

Encontrar queries lentas

Nesta página