Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Supervisar queries lentas

La $currentOp La etapa de agregación proporciona información sobre todas las operaciones que se ejecutan actualmente en MongoDB. Si su aplicación presenta problemas de rendimiento, puede crear una canalización de agregación en torno a esta etapa para supervisar consultas lentas y problemas similares.

Esta tarea utiliza $currentOp para identificar consultas lentas que se están ejecutando actualmente en tu aplicación. Para encontrar todas las queries lentas dentro de un periodo específico, considera utilizar un perfilador.

perfilador
Descripción

Perfilador del query de Atlas

Proporciona un gráfico de dispersión a los clientes de Atlas, lo que facilita la identificación de consultas lentas y valores atípicos de rendimiento.

Almacena información sobre el rendimiento de las consultas en una colección, lo que le permite consultar a MongoDB consultas con problemas de rendimiento específicos.

Tanto el perfilador del query de Atlas como el perfilador de base de datos pueden afectar el rendimiento del servidor, ocupar espacio en disco y exponer metadatos del query sobre campos cifrados. Considera las implicaciones de rendimiento y seguridad antes de activarlas.

Esta tarea identifica las consultas con problemas de rendimiento. Si ya sabes qué consultas tienen problemas de rendimiento, consulta la página Explicación de consultas lentas para resolverlas.

1

Usa la etapa de agregación $currentOp para recuperar las operaciones actuales de 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 agregación recupera todas las operaciones actuales en el clúster. La etapa de agregación $match luego filtra las operaciones a aquellas que han estado ejecutándose durante más de dos segundos. Esto le permite filtrar consultas que se ejecutan dentro de un período específico. Ajusta el valor para que coincida con las necesidades de tu aplicación y base de datos.

La $sort etapa ordena los resultados en orden ascendente de operation time.

2

Vea el campo.currentOp.active Si currentOp.active truees, MongoDB indica que la operación se está ejecutando.

Para detener una operación de larga duración, utilice el método db.killOp() para detener el opiddado.

3

Vea el campo.currentOp.waitingForLock Si currentOp.waitingForLock truees, otra operación en ejecución en el servidor o clúster está bloqueando la consulta.

Para detener una operación bloqueada, utiliza el método db.killOp() para detener el opidcorrespondiente.

4

Verifique el valor en el campo currentOp.planSummary.

IXSCAN
Indica que la consulta realizó un escaneo de índice.
COLLSCAN
Indica que la query realizó un escaneo completo de la colección. Para corregir esto, Crea un índice.
5

Si la etapa de agregación $currentOp devuelve un query que requiere una investigación adicional, utiliza el método explain() para analizar el plan del query y las estadísticas de ejecución.

Para más detalles, consulte Explicación de consultas lentas.

Volver

Encontrar queries lentas

En esta página