Definición
currentOpObsoleto desde la versión 6.2.
En las versiones 6.2 y posteriores, utiliza el
$currentOpetapa de agregación.Devuelve un documento que contiene información sobre operaciones en curso de la instancia
mongod.La
currentOpEl comando de base de datos está obsoleto desde la versión 6.2. Utiliza la etapa de agregación$currentOpen lugar del comandocurrentOpy su método asistentemongoshdb.currentOp().
Compatibilidad
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.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { currentOp: 1 } )
Nota
A partir de MongoDB 5.0, la etapa de agregación $currentOp se usa al ejecutar el método asistente db.currentOp() con mongosh.
Dado esto, en la versión 5.0 de la shell y con mongosh, los conjuntos de resultados db.currentOp() no están sujetos al límite de tamaño de retorno de documento BSON de 16 MB 16MB BSON document return size para documentos de las versiones anteriores heredadas de mongo.
Comportamiento
currentOp debe ejecutarse contra la base de datos admin, y puede aceptar varios campos opcionales.
Campo | Descripción |
|---|---|
| Booleano. Si se establece en En las instancias |
| Booleano. Si se establece en
|
<filter> | Especifica las condiciones de filtro en los campos de salida. Consulta los ejemplos. |
| Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
currentOp y el perfilador de base de datos informan la misma información diagnóstica básica para las operaciones CRUD, incluyendo lo siguiente:
getMore(OP_GET_MORE ycommand)
Estas operaciones también se incluyen en el registro de las query lentas. Consulta slowOpThresholdMs para obtener más información sobre el registro de query lentas.
Redacción
Al utilizar el cifrado consultable, lascurrentOp operaciones con la encryptionInformation opción redactan cierta información:
La salida omite todos los campos después de
"command".La salida redacta
"command"para incluir únicamente el primer elemento,$comment, y$db.
Control de acceso
En los sistemas que se ejecutan con authorization, se debe tener acceso que incluya la acción de privilegio inprog.
Los usuarios pueden usar $ownOps en instancias mongod para ver sus propias operaciones sin la acción de privilegio inprog.
db.adminCommand( { currentOp: 1, "$ownOps": 1 } )
Ejemplos
Los siguientes ejemplos utilizan el comando currentOp con varios documentos de consulta para filtrar la salida.
Mostrar todas las operaciones actuales
db.adminCommand( { currentOp: true, "$all": true } )
Operaciones de guardar en espera de un bloqueo
El siguiente ejemplo devuelve información sobre todas las operaciones de guardar que están esperando un bloqueo:
db.adminCommand( { currentOp: true, "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "command.findandmodify": { $exists: true } } ] } )
Operaciones activas sin resultados
El siguiente ejemplo devuelve información sobre todas las operaciones en ejecución activas que nunca han dado resultados:
db.adminCommand( { currentOp: true, "active" : true, "numYields" : 0, "waitingForLock" : false } )
Operaciones activas en una base de datos específica
El siguiente ejemplo devuelve información sobre todas las operaciones activas para la base de datos db1 que se han estado ejecutando más de 3 segundos:
db.adminCommand( { currentOp: true, "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ } )
Operaciones de indexación activas
El siguiente ejemplo devuelve información sobre las operaciones de creación de índices:
db.getSiblingDB("admin").aggregate( [ { $currentOp : { idleConnections: true } }, { $match: { $or: [ { "op": "command", "command.createIndexes": { $exists: true } }, { "op": "none", "msg": /^Index Build/ } ] } } ] )
MongoDB marca las compilaciones de índices a la espera del quórum de confirmación para completar la operación como una conexión inactiva configurando el campo active en false. La configuración idleConnections: true incluye estas conexiones inactivas en la salida $currentOp.
Ejemplo de salida
El siguiente es un prototipo de la salida currentOp cuando se ejecuta de forma autónoma:
{ "inprog": [ { "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client" : <string>, "appName" : <string>, "clientMetadata" : <document>, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "opid" : <number>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "secs_running" : <Long()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "queryFramework" : <string>, "planSummary": <string>, "cursor" : { // only for getMore operations "cursorId" : <Long()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <Long()>, "nBatchesReturned" : <Long()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <Long()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode" : { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) }, "deadlockCount" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) } }, "ReplicationStateTransition" : { ... }, "Global": { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>, "ok": <num> }
A continuación se muestra un prototipo de la currentOp salida cuando se ejecuta en un primario de un set de réplicas:
{ "inprog": [ { "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client" : <string>, "appName" : <string>, "clientMetadata" : <document>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "transaction" : { "parameters" : { "txnNumber" : <Long()>, "autocommit" : <boolean>, "readConcern" : { "level" : <string> } }, "readTimestamp" : <Timestamp>, "startWallClockTime" : <string>, "timeOpenMicros" : <Long()>, "timeActiveMicros" : <Long()>, "timeInactiveMicros" : <Long()>, "expiryTime" : <string>, }, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "opid" : <number>, "secs_running" : <Long()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "originatingCommand" : <document>, "queryFramework" : <string>, "planSummary": <string>, "prepareReadConflicts" : <Long()>, "writeConflicts" : <Long()>, "cursor" : { // only for getMore operations "cursorId" : <Long()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <Long()>, "nBatchesReturned" : <Long()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <Long()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode" : { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) }, "deadlockCount" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) } }, "ReplicationStateTransition" : { ... }, "Global" : { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>, "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
El siguiente es un ejemplo del resultado de currentOp cuando se ejecuta en un mongos de un clúster (los campos pueden variar según la operación informada):
{ "inprog": [ { "shard": <string>, "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client_s" : <string>, "appName" : <string>, "clientMetadata" : <document>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "transaction" : { "parameters" : { "txnNumber" : <Long()>, "autocommit" : <boolean>, "readConcern" : { "level" : <string> } }, "readTimestamp" : <Timestamp>, "startWallClockTime" : <string>, "timeOpenMicros" : <Long()>, "timeActiveMicros" : <Long()>, "timeInactiveMicros" : <Long()>, "expiryTime" : <string>, }, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "runBy" : [ { "user" : <string>, "db" : <string> } ], "twoPhaseCommitCoordinator" : { "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "txnNumber" : <NumberLong>, "numParticipants" : <NumberLong>, "state" : <string>, "commitStartTime" : <ISODate>, "hasRecoveredFromFailover" : <boolean>, "stepDurations" : <document>, "decision" : <document>, "deadline" : <ISODate> } "opid" : <string>, "secs_running" : <Long()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "configTime" : <Timestamp>, // Starting in 5.0 "topologyTime" : <Timestamp>, // Starting in 5.0 "queryFramework" : <string>, // Starting in 6.2 "planSummary": <string>, "prepareReadConflicts" : <Long()>, "writeConflicts" : <Long()>, "cursor" : { // only for getMore operations "cursorId" : <Long()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <Long()>, "nBatchesReturned" : <Long()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <Long()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "DDLDatabase" : <string>, "DDLCollection" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode": { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) }, "deadlockCount" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) } }, "ReplicationStateTransition" : { ... }, "Global" : { ... }, "Database" : { ... }, ... } }, ... ], "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
Ejemplos específicos de salida
Estas muestras de resultados ilustran la salida currentOp para operaciones concretas. Los campos que componen la salida real varían según el rol del servidor.
Ejemplo de salida de refragmentación
{ shard: '<string>', totalCopyTimeElapsedSecs: Long('<count>'), totalApplyTimeElapsedSecs: Long('<count>'), totalCriticalSectionTimeElapsedSecs: Long('<count>'), totalIndexBuildTimeElapsedSecs: Long('<count>'), indexesToBuild: Long('<count>'), indexesBuilt: Long('<count>'), oplogEntriesFetched: Long('<count>'), oplogEntriesApplied: Long('<count>'), insertsApplied: Long('<count>'), updatesApplied: Long('<count>'), deletesApplied: Long('<count>'), type: 'op', desc: 'ReshardingMetrics{Donor|Recipient|Coordinator}Service <reshardingUUID>', op: 'command', ns: '<database>.<collection>', originatingCommand: { reshardCollection: '<database>.<collection>', key: '<shardkey>', unique:'<boolean>', collation: { locale: 'simple' } }, totalOperationTimeElapsedSecs: Long('<count>'), recipientState: '<service state>', remainingOperationTimeEstimatedSecs: Long('<count>'), approxDocumentsToCopy: Long('<count>'), approxBytesToCopy: Long('<count>'), bytesCopied: Long('<count>'), countWritesToStashCollections: Long('<count>'), documentsCopied: Long('<count>'), provenance: 'reshardCollection' }
Campos de salida
currentOp.typeEl tipo de operación. Los valores son:
opidleSessionidleCursor
Si
currentOp.typeopes, proporciona detalles sobre la operacióncurrentOp.opespecífica.
currentOp.descUna descripción del cliente. Esta string incluye el
connectionId.
currentOp.clientUna string con información sobre el origen de la operación.
Para transacciones multi-documento,
clientalmacena información sobre el cliente más reciente que ejecutó una operación dentro de la transacción.
currentOp.appNameEl identificador de la aplicación cliente que ejecutó la operación. Utiliza la opción de cadena de conexión
appNamepara establecer un valor personalizado para el campoappName.
currentOp.clientMetadataInformación adicional del cliente.
Para transacciones multi-documento,
clientalmacena información sobre el cliente más reciente que ejecutó una operación dentro de la transacción.
currentOp.currentQueueNuevo en la versión 8.0.
La cola actual de la operación.
currentOp.currentQueue.nameEl nombre de la cola actual de la operación.
Nota
Si está presente
currentQueueynameingresses, la operación está esperando la admisión de ingreso.
currentOp.queuesInformación sobre el
ingressactual yexecutioncolas.
currentOp.effectiveUsersUn arreglo que contiene un documento para cada usuario asociado con la operación. Cada documento de usuario contiene el
usernombre y la autenticacióndb.
currentOp.runByUn arreglo que contiene un documento para cada usuario que esté falseando identidad como el
effectiveUser(s)para la operación. El documento runBy contiene el nombre deusery la autenticacióndb. En general, el usuario runBy es el usuario__system; por ejemplo,"runBy" : [ { "user" : "__system", "db" : "local" } ] Solo disponible en clústeres fragmentados
currentOp.lsidEl identificador de sesión.
Solo se presenta si la operación está asociada a una sesión.
currentOp.transactionUn documento que contiene información sobre una transacción multi-documento.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.parametersUn documento que contiene información sobre transacción multi-documento.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.parameters.txnNumberEl número de transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.parameters.autocommitUna bandera booleana que indica si autocommit está activado para la transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.parameters.readConcernEl nivel de consistencia de lectura para la transacción.
Las transacciones multi-documento admiten el nivel de consistencia de lectura
"snapshot","local"y"majority".Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.readTimestampLa marca de tiempo de la instantánea que leen las operaciones en la transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.startWallClockTimeLa fecha y hora (con zona horaria) de inicio de la transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.timeOpenMicrosLa duración de la transacción en microsegundos.
El valor
timeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.timeActiveMicrosLa cantidad total de tiempo que la transacción ha estado activa, es decir, cuándo la transacción tuvo operaciones en ejecución.
El valor
timeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.timeInactiveMicrosLa cantidad total de tiempo que la transacción ha estado inactiva; es decir, cuando la transacción no tuvo operaciones en ejecución.
El valor
timeInactiveMicrosagregado altimeActiveMicrosdebe ser igual atimeOpenMicros.Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.transaction.expiryTimeLa fecha y hora (con zona horaria) en que la transacción expirará y se cancelará.
El es
currentOp.transaction.expiryTimeigual alcurrentOp.transaction.startWallClockTime+transactionLifetimeLimitSecondsel.Para obtener más información, consulta Límite de tiempo de ejecución para transacciones.
Solo está presente si la operación forma parte de una transacción multidocumento.
currentOp.twoPhaseCommitCoordinatorInformación sobre cualquiera de los siguientes:
Las métricas de coordinación de confirmación para una transacción cuyas operaciones de guardado abarcan múltiples particiones.
La coordinación de confirmaciones la maneja un fragmento, y
currentOp(ejecutado en unmongoso en un miembro del fragmento) devuelve la información de coordinación de un fragmento solo para aquellas transacciones que actualmente están siendo coordinadas por ese fragmento.Para filtrar solo por las métricas de coordinación de confirmaciones:
db.currentOp( { desc: "transaction coordinator" }) Una operación de coordinación de confirmación específica (es decir,
currentOp.typeesopcurrentOp.descy"TransactionCoordinator"es) generada por el coordinador de transacciones.
currentOp.twoPhaseCommitCoordinator.lsidEl identificador de sesión para la transacción multipartición.
La combinación de
lsidy identifica latxnNumbertransacción.Disponible tanto para las métricas de coordinación de confirmaciones como para operaciones de coordinación específicas.
currentOp.twoPhaseCommitCoordinator.txnNumberEl número de transacción para la transacción de múltiples particiones.
La combinación de
txnNumbery identifica lalsidtransacción.Disponible tanto para las métricas de coordinación de confirmaciones como para operaciones de coordinación específicas.
currentOp.twoPhaseCommitCoordinator.actionLa operación específica de coordinación de confirmación originada por el coordinador de transacciones:
"sendingPrepare""sendingCommit""sendingAbort""writingParticipantList""writingDecision""deletingCoordinatorDoc"
Sólo disponible para operaciones de coordinación específicas.
currentOp.twoPhaseCommitCoordinator.startTimeLa fecha y hora de inicio del
action.Sólo disponible para operaciones de coordinación específicas.
currentOp.twoPhaseCommitCoordinator.numParticipantsNúmero de fragmentos que participan en esta confirmación.
Solo está disponible para las métricas de coordinación de commits.
currentOp.twoPhaseCommitCoordinator.stateEl paso/estado actual del proceso de coordinación de confirmación.
Paso/etapaDescripcióninactiveNo forma parte activamente de una commit.
writingParticipantListEscribir un registro local de la lista de fragmentos que forman parte de esta transacción de múltiples fragmentos.
waitingForVotesEsperando que los participantes respondan con su voto para confirmar o abortar.
writingDecisionRedactar un registro local de la decisión del coordinador de comprometerse o abortar en función de los votos.
waitingForDecisionAckEsperando que los participantes reconozcan la decisión del coordinador de confirmar o cancelar.
deletingCoordinatorDocEliminar el registro local de la decisión de confirmación.
Solo está disponible para las métricas de coordinación de commits.
Ver también
currentOp.twoPhaseCommitCoordinator.stepDurations.
currentOp.twoPhaseCommitCoordinator.commitStartTimeLa fecha y hora en que comenzó el commit.
Solo está disponible para las métricas de coordinación de commits.
currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverUn booleano que indica si la coordinación de confirmaciones se reinició debido a un cambio de respaldo en la partición que coordina la confirmación.
Si es verdadero, entonces
hasRecoveredFromFailovercurrentOp.twoPhaseCommitCoordinator.stepDurationslos tiempos especificados en pueden no ser precisos para todos los pasos.Solo está disponible para las métricas de coordinación de commits.
currentOp.twoPhaseCommitCoordinator.stepDurationsUn documento que contiene la duración, en microsegundos, de la coordinación de confirmación completada o en
steps/stateprogreso:"stepDurations" : { "writingParticipantListMicros" : Long(17801), "totalCommitDurationMicros" : Long(42488463), "waitingForVotesMicros" : Long(30378502), "writingDecisionMicros" : Long(15015), "waitingForDecisionAcksMicros" : Long(12077145), "deletingCoordinatorDocMicros" : Long(6009) }, Si es verdadero, entonces
currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverstepDurationslos tiempos especificados en pueden no ser precisos para todos los pasos.Para un coordinador en un estado
inactive, el documento está vacío:"stepDurations" : { } Solo está disponible para las métricas de coordinación de commits.
Se puede consultar
currentOp.twoPhaseCommitCoordinator.state.
currentOp.twoPhaseCommitCoordinator.decisionUn documento que contiene la decisión de confirmar o cancelar, por ejemplo:
Para una decisión de confirmación:
"decision" : { "decision" : "commit", "commitTimestamp" : Timestamp(1572034669, 3) } Para una decisión de aborto:
"decision" : { "decision" : "abort", "abortStatus" : { "code" : 282, "codeName" : "TransactionCoordinatorReachedAbortDecision", "errmsg" : "Transaction exceeded deadline" } }
Solo está disponible para las métricas de coordinación de commits.
currentOp.twoPhaseCommitCoordinator.deadlineLa fecha y hora en que el compromiso debe finalizar.
Solo está disponible para las métricas de coordinación de commits.
currentOp.opidEl identificador de la operación. Puede pasar este valor a
db.killOp()en para finalizar lamongoshoperación.Advertencia
Finaliza las operaciones en marcha con extrema precaución. Sólo use
db.killOp()para finalizar las operaciones iniciadas por los clientes y no terminar operaciones internas de base de datos.
currentOp.activeUn valor booleano que especifica si la operación ha comenzado. El valor es
truesi la operación ha comenzado ofalsesi la operación está inactiva, como una conexión inactiva o un hilo interno que actualmente está inactivo. Una operación puede estar activa incluso si ha cedido paso a otra operación. Para algunos subprocesos en segundo plano inactivos, como unsignalProcessingThreadinactivo, MongoDB oculta varios campos vacíos.
currentOp.secs_runningLa duración de la operación en segundos. MongoDB calcula este valor restando la hora actual a la hora de inicio de la operación.
Sólo aparece si la operación se está ejecutando, es decir,
activesitruees.
currentOp.microsecs_runningLa duración de la operación en microsegundos. MongoDB calcula este valor restando la hora actual de la hora de inicio de la operación.
Sólo aparece si la operación se está ejecutando, es decir,
activesitruees.
currentOp.opUna string que identifica el tipo de operación específico. Solo se presenta si
currentOp.typeesop.Los valores posibles son:
"none""update""insert""query""command""getmore""remove""killcursors"
"query"Las operaciones incluyen operaciones de lectura."command"las operaciones incluyen la mayoría de los comandos como elcreateIndexesyfindAndModify.
currentOp.nsEl namespace al que se dirige la operación. Un namespace consiste en el nombre de la base de datos y el nombre de la colección concatenados con un punto (
.); es decir,"<database>.<collection>".
currentOp.commandUn documento que contiene el objeto de comando completo asociado con esta operación.
Por ejemplo, la siguiente salida contiene el objeto de comando para una operación en una colección
findllamadaitemsen una base de datostestllamada:"command" : { "find" : "items", "filter" : { "sku" : 1403978 }, ... "$db" : "test" } El siguiente resultado de ejemplo contiene el objeto de comando para una operación
getMoregenerado por un comando con ID de cursor19234103609en una colección llamadaitemsen una base de datos llamadatest:"command" : { "getMore" : Long("19234103609"), "collection" : "items", "batchSize" : 10, ... "$db" : "test" }, Si el documento de comando supera 1 kilobyte, el documento tiene la siguiente forma:
"command" : { "$truncated": <string>, "comment": <string> } El campo
$truncatedcontiene un resumen en forma de string del documento, excluyendo el campocommentdel documento si está presente. Si el resumen sigue superando 1 kilobyte, se trunca aún más, indicado por una elipsis (...) al final de la string.El campo
commentestá presente si se pasó un comentario a la operación. Se puede adjuntar un comentario a cualquier comando de base de datos.
currentOp.planSummaryEspecifica si el cursor utiliza un escaneo de colección (
COLLSCAN) o un escaneo de índice (IXSCAN { ... }).El
IXSCANtambién incluye el documento de especificación del índice utilizado.
currentOp.prepareReadConflictsEl número de veces que la operación actual tuvo que esperar a que una transacción preparada con un guardado se confirmara o abortara.
Mientras espera, la operación actual sigue manteniendo los bloqueos necesarios y los recursos del motor de almacenamiento.
currentOp.writeConflictsEl número de veces que la operación actual entró en conflicto con otra operación de guardar en el mismo documento.
currentOp.cursorUn documento que contiene la información del cursor para las operaciones de
getmore; es decir, dondeopesgetmore.Si se informa sobre una operación
getmoreantes de que lagetmorehaya accedido a su información del cursor, el campocursorno está disponible.currentOp.cursor.noCursorTimeoutLa bandera que indica que el cursor no se agotará por inactividad; es decir, si el cursor tiene activada la opción
noTimeout.Si es cierto, el cursor no agota el tiempo cuando está inactivo.
En caso de ser falso, el cursor se desactiva cuando está inactivo.
currentOp.cursor.tailableLa bandera que indica si el cursor es un cursor con seguimiento para una colección con tamaño fijo. Los cursores con seguimiento permanecen abiertos después de que el cliente agota los resultados en el cursor inicial.
currentOp.cursor.awaitDataEl indicador que señala si el cursor con seguimiento debe bloquear temporalmente un comando
getMoreen el cursor mientras espera nuevos datos en lugar de devolver ningún dato.Para los cursores sin seguimiento, el valor siempre es false.
currentOp.cursor.originatingCommandEl campo
originatingCommandcontiene el objeto de comando completo (por ejemplo,findoaggregate) que creó originalmente el cursor.
currentOp.locksEl documento
locksinforma el tipo y el modo de bloqueos que la operación mantiene actualmente. Los posibles tipos de bloqueo son los siguientes:Tipo de bloqueoDescripciónParallelBatchWriterModeRepresenta un bloqueo para el modo de escritura por lotes paralelo.
En versiones anteriores, la información de PBWM se informaba como parte de la información de bloqueo de
Global.ReplicationStateTransitionRepresenta el bloqueo tomado para las transiciones de estado del nodo del set de réplicas.
GlobalRepresenta el bloqueo global.
DatabaseRepresenta el bloqueo de la base de datos.
CollectionRepresenta un bloqueo de colección.
MutexRepresenta una exclusión mutua.
MetadataRepresenta un bloqueo de metadatos.
DDLDatabaseRepresenta un bloqueo de base de datos DDL.
Nuevo en la versión 7.1.
DDLCollectionRepresenta un bloqueo de colección DDL.
Nuevo en la versión 7.1.
oplogRepresenta un bloqueo en el oplog.
Los modos posibles son los siguientes:
Modo de bloqueoDescripciónRRepresenta un bloqueo compartido (S).
WRepresenta un bloqueo exclusivo (X).
rRepresenta un bloqueo de intención compartida (IS).
wRepresenta un bloqueo de intención exclusiva (IX).
currentOp.admissionPriorityPara uso interno. El valor es la prioridad que tiene una operación cuando intenta adquirir un ticket para realizar una acción del motor de almacenamiento.
Los valores posibles son: "bajo", "normal" e "inmediato". Solo se informan las operaciones con un valor "bajo".
Ejemplo de salida
currentOp:{ type: 'op', host: 'ip-10-122-5-147:27017', desc: 'JournalFlusher', active: true, currentOpTime: '2022-10-11T12:45:52.053+00:00', opid: 201, op: 'none', ns: '', command: {}, numYields: 0, admissionPriority: 'low', locks: {}, waitingForLock: false, lockStats: {}, waitingForFlowControl: false, flowControlStats: {} } El valor
admissionPrioritytambién se informa en el registro lento.Nuevo en la versión 6.3.
currentOp.waitingForLockDevuelve un valor booleano.
waitingForLockestruesi la operación está esperando un bloqueo yfalsesi la operación tiene el bloqueo requerido.
currentOp.msgEl
msgproporciona un mensaje que describe el estado y el progreso de la operación. En el caso de las operaciones de indexación o mapReduce, el campo informa el porcentaje de finalización.
currentOp.progressInformes sobre el progreso de las operaciones de mapReduce o indexación. Los campos
progresscorresponden al porcentaje de finalización del campomsg. Elprogressespecifica la siguiente información:
currentOp.killPendingDevuelve
truesi la operación está actualmente marcada para su finalización. Cuando la operación encuentre su siguiente punto seguro de terminación, la operación terminará.
currentOp.numYieldsnumYieldses un contador que informa el número de veces que la operación ha suspendido para permitir que otras operaciones se completen.Por lo general, las operaciones ceden cuando necesitan acceder a datos que MongoDB aún no ha leído completamente en la memoria. Esto permite que otras operaciones que tienen datos en memoria se completen rápidamente mientras MongoDB lee los datos de la operación de ceder recursos.
currentOp.dataThroughputLastSecondCantidad de datos (en MiB) procesados por la operación en el último
validatevalidatesegundo. Solo disponible para una operación que esté escaneando documentos. Por ejemplo:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
currentOp.dataThroughputAverageLa cantidad promedio de datos (en MiB) procesados por la operación. Solo
validatevalidatedisponible para una operación que esté escaneando documentos. Por ejemplo:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
currentOp.fsyncLockEspecifica si la base de datos está actualmente bloqueada
fsync write/snapshotpara.Solo aparece si está bloqueado; es decir, si
fsyncLockestátrue.
currentOp.infoInformación sobre cómo desbloquear la base de datos desde
db.fsyncLock(). Solo aparece sifsyncLockestátrue.
currentOp.lockStatsPara cada tipo y modo de bloqueo (ver
currentOp.lockspara descripciones de tipos y modos de bloqueo), devuelve la siguiente información:currentOp.lockStats.acquireCountCantidad de veces que la operación adquirió el bloqueo en el modo especificado.
currentOp.lockStats.acquireWaitCountNúmero de veces que la operación tuvo que esperar las
acquireCountadquisiciones de bloqueo porque los bloqueos se mantuvieron en un modo conflictivo. es menor oacquireWaitCountigualacquireCounta.
currentOp.lockStats.timeAcquiringMicrosTiempo acumulado en microsegundos que la operación tuvo que esperar para adquirir los bloqueos.
timeAcquiringMicrosdividido poracquireWaitCountproporciona un tiempo de espera promedio aproximado para la moda de bloqueo particular.
currentOp.waitingForFlowControlUn valor booleano que indica si la operación está en proceso de espera para el control de flujo.
currentOp.flowControlStatsLas estadísticas de control de flujo para esta operación.
currentOp.totalOperationTimeElapsedSecsTiempo total transcurrido, en segundos, para la operación de refragmentación actual. El tiempo se establece en 0 cuando se inicia una nueva operación de refragmentación.
Solo está presente si se está realizando una operación de re-asignación de particiones.
Nuevo en la versión 5.0.
A partir de MongoDB 6.1, esta métrica también está disponible en el coordinador durante la reorganización.
currentOp.updatesAppliedEl número de actualizaciones aplicadas.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 6.1.
currentOp.remainingOperationTimeEstimatedSecsremainingOperationTimeEstimatedSecs:: tiempo estimado restante en segundos para la operación de redistribución de particiones actual. Se devuelve como-1cuando se inicia una nueva operación de redistribución de particiones.A partir de MongoDB 7.0,
remainingOperationTimeEstimatedSecstambién está disponible en el coordinador durante una operación de reorganización.remainingOperationTimeEstimatedSecsse establece en una estimación de tiempo pesimista:La estimación de tiempo de la fase de actualización se establece en el tiempo de la fase de clonación, que es un periodo relativamente largo.
En la práctica, si sólo hay unas pocas operaciones de escritura pendientes, el tiempo real de la fase de sincronización es relativamente corto.
Nuevo en la versión 5.0.
currentOp.allShardsLowestRemainingOperationTimeEstimatedSecsCalculada en todas las particiones, la estimación más baja de la cantidad de segundos que quedan.
Solo está presente en un coordinador cuando se lleva a cabo una operación de resharding.
Nuevo en la versión 6.1.
currentOp.allShardsHighestRemainingOperationTimeEstimatedSecsCalculado en todos los fragmentos, la estimación más alta del número de segundos que quedan.
Solo está presente en un coordinador cuando se lleva a cabo una operación de resharding.
Nuevo en la versión 6.1.
currentOp.approxDocumentsToCopyEl número aproximado de documentos que se copiarán de los fragmentos donantes a los fragmentos receptores durante la reorganización. Este número es una estimación que se establece al inicio de la reorganización y no cambia una vez establecido. El número se establece en 0 al iniciar una nueva reorganización. Es posible que
$currentOp.documentsCopiedy$currentOp.bytesCopiedsuperen$currentOp.approxDocumentsToCopya$currentOp.approxBytesToCopyy, respectivamente, si la distribución de datos posterior a la reorganización no es perfectamente uniforme.Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
currentOp.documentsCopiedLa cantidad de documentos copiados desde particiones donantes a particiones receptoras durante la operación de refragmentación. El número se establece en 0 cuando se inicia una nueva operación de cambio de partición.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
currentOp.approxBytesToCopyEl número aproximado de bytes que se copiarán de las particiones donantes a las particiones receptoras durante la operación de reshardeo. Esta cifra es una estimación que se establece al inicio de la operación de reconfiguración y que no cambia después de haber sido definida. El número se establece en 0 cuando inicia una nueva operación de redistribución de shards. Es posible que
$currentOp.documentsCopiedy$currentOp.bytesCopiedterminen superando$currentOp.approxDocumentsToCopyy$currentOp.approxBytesToCopy, respectivamente, si la distribución de datos posterior a la redistribución no es perfectamente uniforme.Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
currentOp.bytesCopiedEl número de bytes copiados de particiones donantes a particiones receptoras durante la operación de refragmentación. El número se establece en 0 cuando se inicia una nueva operación de reestructuración.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
currentOp.countWritesToStashCollectionsEl número de escrituras a las colecciones de reservasdel destinatario.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 6.1.
currentOp.countWritesDuringCriticalSectionLa cantidad de intentos de guardado durante la sección crítica del donante.
Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
Nuevo en la versión 6.1.
currentOp.countReadsDuringCriticalSectionLa cantidad de intentos de lecturas durante la sección crítica del donante.
Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
Nuevo en la versión 6.1.
currentOp.deletesAppliedLa cantidad de eliminaciones aplicadas a la colección temporal de redistribución. Cada entrada de oplog que implica una eliminación incrementa el contador en uno.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 6.1.
currentOp.insertsAppliedLa cantidad de inserciones aplicadas a la colección temporal de refragmentación. Cada entrada de oplog que implica una inserción incrementa el contador en uno.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 6.1.
currentOp.totalCopyTimeElapsedSecsTiempo total transcurrido, en segundos, para las tareas de copia de datos en curso desde los fragmentos donantes a los fragmentos receptores durante la operación de reorganización actual. El tiempo se establece en 0 cuando se inicia una nueva operación de reorganización.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
A partir de MongoDB 6.1, esta métrica también está disponible en el coordinador durante la reorganización.
currentOp.oplogEntriesFetchedNúmero de entradas extraídas del registro de operaciones para la operación de refragmentación actual. El número se establece en 0 cuando se inicia una nueva operación de refragmentación.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
currentOp.oplogEntriesAppliedEl número de entradas aplicadas al Oplog para la operación actual de re-sharding. El número se establece en 0 cuando comienza una nueva operación de cambiación de particiones.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
currentOp.totalApplyTimeElapsedSecsEl tiempo total transcurrido, en segundos, para el paso de aplicar de la operación de redistribución actual. En el paso de aplicación, los fragmentos receptores aplican entradas de oplog para modificar sus datos basándose en nuevas escrituras entrantes de fragmentos donantes. El tiempo se ajusta a 0 cuando se inicia una nueva operación de redistribución.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
A partir de MongoDB 6.1, esta métrica también está disponible en el coordinador durante la reorganización.
currentOp.countWritesDuringCriticalSectionEl número de guardados realizados en la sección crítica para la operación de re-sharding actual. La sección crítica impide la entrada de nuevas escrituras en la colección que actualmente está siendo redistribuida. El número se establece en 0 cuando comienza una nueva operación de redistribución.
Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
Nuevo en la versión 5.0.
currentOp.totalCriticalSectionTimeElapsedSecsEl tiempo total transcurrido, en segundos, para la sección crítica de la operación de repartición actual. Esta sección impide nuevas escrituras entrantes en la colección que se está repartiendo. El tiempo se establece en 0 cuando se inicia una nueva operación de repartición.
Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
Nuevo en la versión 5.0.
A partir de MongoDB 6.1, esta métrica también está disponible en el coordinador durante la reorganización.
currentOp.donorStateEl estado actual de un fragmento donante para la operación de refragmentación. El estado se establece
unuseden cuando se inicia una nueva operación de refragmentación.Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
EstadoDescripciónunusedLa operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.
preparing-to-donateLa partición donante se está preparando para donar datos a las particiones receptoras.
donating-initial-dataEl fragmento donante está transfiriendo datos a los fragmentos receptores.
donating-oplog-entriesLa partición donante está donando entradas de oplog a las particiones receptoras.
preparing-to-block-writesLa partición donante está a punto de impedir nuevas operaciones de guardado en la colección que se está redistribuyendo.
errorSe ha producido un error durante la operación de redistribución de fragmentos.
blocking-writesLa partición donante está impidiendo nuevas operaciones de guardado entrantes y ha notificado a todas las particiones receptoras que se han impedido nuevos guardados entrantes.
doneLa partición donante ha descartado la antigua colección particionada y la operación de redistribución ha finalizado.
Nuevo en la versión 5.0.
currentOp.recipientStateEl estado actual de un fragmento destinatario para una operación de re-fragmentación. El estado se establece
unuseden cuando se inicia una nueva operación de re-fragmentación.Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
EstadoDescripciónunusedLa operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.
awaiting-fetch-timestampEl fragmento receptor está esperando que los fragmentos donantes estén preparados para donar sus datos.
creating-collectionLa partición receptora está creando la nueva colección particionada.
cloningLa partición receptora está recibiendo datos de las particiones donantes.
applyingLa partición receptora está aplicando entradas del oplog para modificar su copia de los datos en función de las nuevas operaciones de guardado entrantes de las particiones donantes.
errorSe ha producido un error durante la operación de redistribución de fragmentos.
strict-consistencyLa partición receptora tiene todos los cambios de datos almacenados en una colección temporal.
doneLa operación de redistribución está completa.
Nuevo en la versión 5.0.
currentOp.coordinatorStateEl estado del coordinador de resharding para la operación de resharding actual. El coordinador de resharding es una operación que se ejecuta en el primario del servidor de configuración. El estado se establece en
unusedcuando una nueva operación de resharding comienza.Solo está presente en el servidor de configuración coordinador.
EstadoDescripciónunusedLa operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.
initializingEl coordinador de redistribución ha insertado el documento del coordinador en
config.reshardingOperationsy ha agregado elreshardingFieldsa la entradaconfig.collectionspara la colección original.preparing-to-donateEl coordinador de redistribución
ha creado una entrada
config.collectionspara la colección de redistribución temporal.ha insertado entradas en
config.chunkspara los rangos basados en la nueva clave de partición.ha insertado entradas en
config.tagspara cualquier zona asociada con la nueva clave de partición.
El coordinador informa a las particiones participantes que comiencen la operación de redistribución. A continuación, el coordinador espera hasta que todas las particiones donantes hayan elegido un
minFetchTimestampy estén listas para donar.cloningEl coordinador de redistribución informa a las particiones donantes que deben donar datos a las particiones receptoras. El coordinador espera a que todas las particiones receptoras terminen de clonar los datos de la partición donante.
applyingEl coordinador de redistribución informa a las particiones receptoras que modifiquen sus copias de datos basándose en nuevos guardados entrantes de particiones donantes. El coordinador espera a que todas las particiones receptoras terminen de aplicar las entradas de oplog.
blocking-writesEl coordinador de redistribución informa a las particiones donantes que eviten que se vuelvan a redistribuir las nuevas operaciones de guardado entrantes a la colección. A continuación, el coordinador espera a que todas las particiones receptoras hayan recibido todos los cambios de datos.
abortingSe produjo un error irrecuperable durante la operación de redistribución o se ejecutó el comando
abortReshardCollection(o el métodosh.abortReshardCollection()).committingEl coordinador de redistribución remueve la entrada
config.collectionspara la colección de redistribución temporal. A continuación, el coordinador agrega elrecipientFieldsa la entrada de la colección de origen.Nuevo en la versión 5.0.
currentOp.collUuidEl UUID de la colección muestreada.
Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.
currentOp.startTimeLa hora en la que comenzó el muestreo de consultas.
Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.
currentOp.samplesPerSecondEl número máximo de consultas para muestrear por segundo.
En una clúster fragmentado, esto se reporta en
mongosen lugar demongod. En un set de réplicas, esto se reporta enmongod.Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.
currentOp.sampledReadsCountEl número de read queries muestreadas.
Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.
currentOp.sampledWritesCountEl número de queries de guardado muestreadas.
Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.
currentOp.sampledReadsBytesEl tamaño de las consultas de lectura muestreadas, en bytes.
En un set de réplicas, esto se informa en cada
mongod.En un clúster fragmentado, esto solo se informó en
mongodcon--shardsvr.Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.
currentOp.sampledWritesBytesEl tamaño de las consultas de escritura muestreadas, en bytes.
En un set de réplicas, esto se informa en cada
mongod.En un clúster fragmentado, esto solo se informó en
mongodcon--shardsvr.Este campo solo aparece en documentos relacionados con el muestreo de consultas. Para obtener detalles, consulte Queries de muestra.
Nuevo en la versión 7.0.