Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Supervisar queries lentas

La $currentOp etapa de agregación proporciona información sobre todas las operaciones que se están ejecutando actualmente en MongoDB. Si su aplicación está experimentando problemas de rendimiento, puede construir un pipeline 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 una gráfica de dispersión a los clientes de Atlas, lo que facilita la identificación de queries lentas y casos atípicos de rendimiento.

Almacena la información del rendimiento de las queries en una colección, lo que permite query MongoDB sobre queries 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

Ver el campo currentOp.active. Si currentOp.active es true, MongoDB indica que la operación se está ejecutando actualmente.

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

3

Ver el campo currentOp.waitingForLock. Si currentOp.waitingForLock es true, otra operación en ejecución en el servidor o clúster está bloqueando la query.

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