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
/ /

perfil (comando de base de datos)

profile

Modificado en la versión 5.0.

Para un mongod instancia, el comando habilita, deshabilita o configura el perfilador de base de datos. El perfilador captura y registra datos sobre el rendimiento de las operaciones de escritura, cursores y comandos de base de datos en una instancia activa de mongod. Si el perfilador está deshabilitado, el comando configura cómo se registran las operaciones lentas en el registro de diagnóstico.

En mongod, si el nivel del perfilador de base de datos es 2, el registro completo está habilitado en el perfilador y el diagnostic log.

En el nivel de perfilador de base de datos 1, los siguientes ajustes modifican tanto el perfilador como el diagnostic log:

  • slowms

  • sampleRate

  • filtro

Si el nivel del perfilador de base de datos es 0, el perfilador de base de datos está deshabilitado. En el nivel 0, la configuración siguiente solo modifica el registro de diagnósticos:

En una mongos instancia, el comando sólo configura cómo se escriben las operaciones en el registro de diagnóstico. No se puede habilitar el perfilador de base de datos en una mongos instancia porque mongos no tiene ninguna colección en la que el perfilador pueda guardar.

A partir de MongoDB,5.0 los cambios realizados en el generador de perfiles de base level deslowms sampleRatedatos,, o filter mediante el El comando profile o el método contenedor db.setProfilingLevel() se registran en el log file.

En mongos, puedes establecer el nivel de profile en:

  • 0 para establecer el slowms, sampleRate y filter para el registro de diagnóstico;

  • -1 para leer la configuración actual.

El perfilador está desactivado por defecto.

Advertencia

El perfilado puede degradar el rendimiento y exponer datos de la consulta no cifrados en el registro del sistema. Considera detenidamente cualquier implicación de rendimiento y seguridad antes de configurar y activar el perfilador en una implementación de producción.

Consulte Sobrecarga del perfilador para obtener más información sobre la posible degradación del rendimiento.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Nota

Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El comando tiene la siguiente sintaxis:

db.runCommand(
{
profile: <level>,
slowms: <threshold>,
sampleRate: <rate>,
filter: <filter expression>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

profile

Int

Configura el nivel del perfilador. Los siguientes niveles de perfilador están disponibles:

0
El perfilador está desactivado y no recopila ningún dato. Este es el nivel por defecto del perfilador.
1

El generador de perfiles recopila datos de las operaciones que toman más tiempo que el valor de slowms o que coinciden con un filtro.

Cuando se establece un filtro:

  • Las opciones slowms y sampleRate no se utilizan para el perfilado.

  • El perfilador solo captura las operaciones que coinciden con el filtro.

2
El perfilador recopila datos de todas las operaciones. Cuando se establece en el nivel 2, el perfilador ignora los valores proporcionados por el usuario para slowms y filter.

Dado que el perfilado no está disponible en mongos, el comando profile no se puede utilizar para establecer el nivel de perfilado en un valor distinto de 0 en una instancia mongos.

slowms

Int

Opcional. Valor predeterminado: 100

El umbral de tiempo de operación lenta, en milisegundos. Las operaciones que se ejecutan durante más tiempo que este umbral se consideran lentas.

Cuando logLevel se establece en 0, MongoDB registra las operaciones lentas en el registro de diagnóstico a una tasa determinada por slowOpSampleRate.

Con configuraciones más altas de logLevel, todas las operaciones aparecen en el registro de diagnóstico independientemente de su latencia, con la siguiente excepción: el registro de mensajes de entrada de oplog lentos por parte de los secundarios. Los secundarios solo registran las entradas de oplog lentas; aumentar el logLevel no registra todas las entradas de oplog.

Este argumento afecta a la misma configuración que la opción de configuración operationProfiling.slowOpThresholdMs.

sampleRate

doble

Opcional. Valor predeterminado: 1.0

La fracción de operaciones lentas que se deben perfilar o registrar. sampleRate acepta valores entre 0 y 1, inclusive.

Este argumento afecta la misma configuración que la opción de configuración operationProfiling.slowOpSampleRate y no afecta los mensajes de registro de entrada de oplog lento en los secundarios.

filter

Objeto

Opcional. Una consulta que determina qué operaciones se perfilan o registran.

La query de filtro toma la siguiente forma:

{ <field1>: <expression1>, ... }

La consulta puede ser cualquier operación legal de find() donde la consulta <field> coincida con un campo en la salida del perfilador.

Este argumento afecta la misma configuración que la opción de configuración operationProfiling.filter. Cuando filter está establecido, las opciones slowms y sampleRate no se utilizan para la creación de perfiles ni para las líneas del registro de consultas lentas.

Los db.getProfilingStatus() db.setProfilingLevel() métodos de shell y profile proporcionan envoltorios alrededor del comando.

El comando profile obtiene un bloqueo de escritura en la base de datos afectada mientras activa o desactiva el perfilador. Normalmente, esta es una operación breve. El bloqueo detiene otras operaciones hasta que finaliza el comando profile.

Cuando esté conectado a un clúster fragmentado a través de mongos, puede ejecutar el comando profile en cualquier base de datos.

Tip

Para habilitar la generación de perfiles y filtrar los datos registrados:

db.runCommand(
{
profile: 1,
filter:
{
$or:
[
{ millis: { $gte: 100 } },
{ user: "testuser@admin" }
]
}
}
)

El filtro solo selecciona operaciones que sean:

  • al menos 100 milisegundos de duración, o

  • presentado por el testuser.

Para borrar un filtro de perfil, ejecute profile con la opción filter: "unset".

db.runCommand(
{
profile: 1,
filter: "unset"
}
)

La operación devuelve un documento con los valores anteriores de la configuración.

Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().

Volver

ping

En esta página