Docs Menu
Docs Home
/ /

Supervisar queries lentas

El $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 usa para identificar las consultas lentas que se están ejecutando en la aplicación. Para encontrar todas las consultas lentas en un período específico, considere usar un generador de $currentOp perfiles.

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 sabe qué consultas presentan problemas de rendimiento, consulte Explicar las consultas lentas para solucionarlos.

1

Utilice la $currentOp etapa de agregación 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"
}
]

Esta canalización de agregación recupera todas las operaciones actuales del clúster. La $match etapa de agregación filtra las operaciones que llevan ejecutándose más de dos segundos. Esto permite filtrar las consultas que se ejecutan dentro de un período específico. Ajuste el valor según las necesidades de su aplicación y base de datos.

La etapa ordena los resultados en orden ascendente de tiempo de $sort operación.

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 ejecución larga, utilice el método para detener db.killOp() el opid indicado.

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, utilice el método para detener db.killOp() el opid dado.

4

Compruebe el valor en el currentOp.planSummary campo.

IXSCAN
Indica que la consulta realizó un escaneo de índice.
COLLSCAN
Indica que la consulta realizó un análisis completo de la colección. Para corregirlo, cree un índice.
5

Si la $currentOp etapa de agregación devuelve una consulta que requiere más investigación, utilice el explain() método para analizar el plan de consulta y las estadísticas de ejecución.

Para obtener más detalles, consulte Explicar las consultas lentas.

Volver

Encontrar queries lentas

En esta página