Definição
currentOpObsoleto desde a versão 6.2.
Nas versões 6.2 e posterior, utilize o estágio de aggregation de
$currentOp.Retorna um documento que contém informações sobre operações em andamento para a instância do
mongod.O comando de banco de dados do
currentOpé preterido desde a versão 6.2. Use o estágio de agregação$currentOpem vez do comandocurrentOpe seu método assistentemongoshdb.currentOp().
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { currentOp: 1 } )
Observação
A partir do MongoDB,5.0 o $currentOp estágio de agregação é usado ao executar o método assistente db.currentOp() mongoshcom.
Diante disso, na versão 5.0 do shell e com mongosh, os conjuntos de resultados de db.currentOp() não estão sujeitos ao limite do tamanho de retorno de documento BSON de 16 MB para documentos das versões anteriores do mongo herdado.
Comportamento
currentOp deve ser executado no banco de dados admin e pode aceitar vários campos opcionais.
Campo | Descrição |
|---|---|
| Booleano. Se definido para Em instâncias do |
| Booleano. Se definido para
|
<filter> | Especifique as condições de filtro nos Campos de Saída. Veja exemplos. |
| Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
currentOp e o analisador de banco de dados relatam as mesmas informações de diagnóstico básicas para operações CRUD, incluindo o seguinte:
getMore(OP_GET_MORE ecommand)
Essas operações também são incluídas no logging de queries lentas. Consulte slowOpThresholdMs para obter mais informações sobre registro de queries lentas.
Redação
Ao usar Queryable Encryption, as operações currentOp com a opção encryptionInformation suprimem determinadas informações:
A saída omite todos os campos após
"command".A saída edita
"command"para incluir apenas o primeiro elemento$commente$db.
Controle de acesso
Em sistemas executados com authorization, o usuário deve ter acesso que inclua a ação de privilégio inprog.
Os usuários podem utilizar o $ownOps em instâncias do mongod para visualizar suas próprias operações sem a ação de privilégio do inprog.
db.adminCommand( { currentOp: 1, "$ownOps": 1 } )
Exemplos
Os exemplos seguintes utilizam o comando currentOp com vários documentos de query para filtrar a saída.
Exibir todas as operações atuais
db.adminCommand( { currentOp: true, "$all": true } )
Operações de gravação aguardando um bloqueio
O exemplo a seguir retorna informações sobre todas as operações de gravação que estão aguardando um bloqueio:
db.adminCommand( { currentOp: true, "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "command.findandmodify": { $exists: true } } ] } )
Operações ativas sem rendimento
O exemplo a seguir retorna informações sobre todas as operações em execução ativas que nunca produziram:
db.adminCommand( { currentOp: true, "active" : true, "numYields" : 0, "waitingForLock" : false } )
Operações ativas em um banco de dados específico
O exemplo a seguir retorna informações sobre todas as operações ativas do banco de dados db1 que estão em execução há mais de 3 segundos:
db.adminCommand( { currentOp: true, "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ } )
Operações de indexação ativas
O exemplo a seguir retorna informações sobre operações de criação de índice:
db.getSiblingDB("admin").aggregate( [ { $currentOp : { idleConnections: true } }, { $match: { $or: [ { "op": "command", "command.createIndexes": { $exists: true } }, { "op": "none", "msg": /^Index Build/ } ] } } ] )
O MongoDB marca as compilações de índice aguardando o quórum para a confirmação para concluir a operação como uma conexão ociosa definindo o campo active como false. A configuração idleConnections: true inclui essas conexões ociosas na saída $currentOp.
Exemplo de saída
The following is a prototype of the currentOp output when run on a standalone:
{ "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>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "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> }
The following is a prototype of the currentOp output when run on a primary of a replica set:
{ "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>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "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> }
The following is an example of the currentOp output when run on a mongos of a sharded cluster (Fields may vary depending on the operation being reported):
{ "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>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "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" : { ... }, ... } }, ... ], "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
Exemplos de saída específicos
Estas amostras de saída ilustram currentOp saída para operações específicas. Os campos que compõem a saída real variam dependendo do papel do servidor.
Exemplo de saída de refragmentação
{ type: "op", desc: "Resharding{Donor, Recipient, Coordinator}Service <reshardingUUID>", op: "command", ns: "<database>.<collection>", originatingCommand: { reshardCollection: "<database>.<collection>", key: <shardkey>, unique: <boolean>, collation: {locale: "simple"}, // Other options to the reshardCollection command are omitted // to decrease the likelihood the output is truncated. }, {donor, coordinator, recipient}State : "<service state>", approxDocumentsToCopy: NumberLong(<count>), approxBytesToCopy: NumberLong(<count>), bytesCopied: NumberLong(<count>), countWritesToStashCollections: NumberLong(<count>), countWritesDuringCriticalSection : NumberLong(<count>), countReadsDuringCriticalSection: NumberLong(<count>), deletesApplied: NumberLong(<count>), documentsCopied: NumberLong(<count>), insertsApplied: NumberLong(<count>), oplogEntriesFetched: NumberLong(<count>), oplogEntriesApplied: NumberLong(<count>), remainingOperationTimeEstimatedSecs: NumberLong(<count>), allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), totalApplyTimeElapsedSecs: NumberLong(<count>), totalCopyTimeElapsedSecs: NumberLong(<count>), totalCriticalSectionTimeElapsedSecs : NumberLong(<count>), totalOperationTimeElapsedSecs: NumberLong(<count>), updatesApplied: NumberLong(<count>), }
Exemplo de índice global
{ type: "op", desc: "GlobalIndex{Donor, Recipient, Coordinator}Service <globalIndexUUID}", op: "command", ns: "<database>.<collection>", originatingCommand: { createIndexes: "<database>.<collection>", key: <indexkeypattern>, unique: <boolean>, <Additional createIndexes options> }, {donor, coordinator, recipient}State : "<service state>", approxDocumentsToScan: Long(<count>), approxBytesToScan: Long(<count>), bytesWrittenFromScan: Long(<count>), countWritesToStashCollections: Long(<count>), countWritesDuringCriticalSection : Long(<count>), countReadsDuringCriticalSection: Long(<count>), keysWrittenFromScan: Long(<count>), remainingOperationTimeEstimatedSecs: Long(<count>), allShardsLowestRemainingOperationTimeEstimatedSecs: Long(<estimate>), allShardsHighestRemainingOperationTimeEstimatedSecs: Long(<estimate>), totalCopyTimeElapsedSecs: Long(<count>), totalCriticalSectionTimeElapsedSecs : Long(<count>), totalOperationTimeElapsedSecs: Long(<count>), }
Campos de Saída
currentOp.typeO tipo de operação. Os valores são:
opidleSessionidleCursor
If the
currentOp.typeisop,currentOp.opprovides details on the specific operation.
currentOp.descA description of the client. This string includes the
connectionId.
currentOp.clientUma string com informações sobre a origem da operação.
For multi-document transactions,
clientstores information about the most recent client to run an operation inside the transaction.
currentOp.appNameO identificador do aplicativo cliente que executou a operação. Use uma opção
appNamede connection string para definir um valor personalizado para o campoappName.
currentOp.clientMetadataInformações adicionais sobre o cliente.
For multi-document transactions,
clientstores information about the most recent client to run an operation inside the transaction.
currentOp.effectiveUsersUma array que contém um documento para cada usuário associado à operação. Cada documento de usuário contém o nome
usere a autenticaçãodb.Dica
currentOp.runByAn array that contains a document for each user who is impersonating the
effectiveUser(s)for the operation. The runBy document contains theusername and the authenticationdb. In general, the runBy user is the__systemuser; e.g."runBy" : [ { "user" : "__system", "db" : "local" } ] Disponível apenas em clusters fragmentados
currentOp.lsidO identificador da sessão.
Somente presente se a operação estiver associada a uma sessão.
currentOp.transactionUm documento que contém informações de transação multidocumento.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.parametersUm documento que contém informações sobre transações com vários documentos.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.parameters.txnNumberO número da transação.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.parameters.autocommitUma bandeira booleana que indica se o envio automático está ativado para a transação.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.parameters.readConcernA read concern com a transação.
As transações com vários documentos são compatíveis com read concern
"snapshot","local"e"majority".Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.readTimestampO carimbo de data/hora do snapshot que está sendo lido pelas operações na transação.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.startWallClockTimeA data e hora (com fuso horário) do início da transação.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.timeOpenMicrosA duração da transação em microssegundos.
The
timeActiveMicrosvalue added to thetimeInactiveMicrosshould equal thetimeOpenMicros.Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.timeActiveMicrosA quantidade total de tempo em que a transação esteve ativa; ou seja, quando a transação teve operações em execução.
The
timeActiveMicrosvalue added to thetimeInactiveMicrosshould equal thetimeOpenMicros.Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.timeInactiveMicrosO tempo total em que a transação ficou inativa; ou seja, quando a transação não tinha operações em execução.
The
timeInactiveMicrosvalue added to thetimeActiveMicrosshould equal thetimeOpenMicros.Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.transaction.expiryTimeA data e a hora (com fuso horário) em que a transação irá expirar e cancelar.
The
currentOp.transaction.expiryTimeequals thecurrentOp.transaction.startWallClockTime+ thetransactionLifetimeLimitSeconds.Para obter mais informações, consulte o Limite de tempo de execução para transações.
Somente presente se a operação fizer parte de uma transação multidocumento.
currentOp.twoPhaseCommitCoordinatorInformações sobre:
As métricas de coordenação de cometimento para uma transação cujas operações de gravação abrangem vários shards.
A coordenação de confirmação é tratada por um shard e
currentOp(executado em ummongosou um membro do shard) retorna as informações de coordenação de um shard somente para as transações atualmente coordenadas por esse shard.Para filtrar apenas as métricas de coordenação de confirmação:
db.currentOp( { desc: "transaction coordinator" }) A specific commit coordination operation (i.e.
currentOp.typeisopandcurrentOp.descis"TransactionCoordinator") spawned by the transaction coordinator.
currentOp.twoPhaseCommitCoordinator.lsidO identificador da sessão para a transação com vários fragmentos.
The combination of the
lsidandtxnNumberidentifies the transaction.Disponível tanto para as métricas de coordenação de confirmação quanto para a operação de coordenaçãoespecífica .
currentOp.twoPhaseCommitCoordinator.txnNumberO número da transação para a transação multi-shard.
The combination of the
txnNumberandlsididentifies the transaction.Disponível tanto para as métricas de coordenação de confirmação quanto para a operação de coordenaçãoespecífica .
currentOp.twoPhaseCommitCoordinator.actionA operação de coordenação de cometimento específica gerada pelo coordenador de transações:
"sendingPrepare""sendingCommit""sendingAbort""writingParticipantList""writingDecision""deletingCoordinatorDoc"
Disponível apenas para operação de coordenaçãoespecífica.
currentOp.twoPhaseCommitCoordinator.startTimeThe start date and time of the
action.Disponível apenas para operação de coordenaçãoespecífica.
currentOp.twoPhaseCommitCoordinator.numParticipantsNúmero de fragmentos participantes neste commit.
Disponível somente para as métricas de coordenação de cometimento.
currentOp.twoPhaseCommitCoordinator.stateA etapa/estado atual do processo de coordenação de commit.
Etapa/estágioDescriçãoinactiveNão faz parte ativamente de um commit.
writingParticipantListEscrevendo um registro local da lista de fragmentos que fazem parte dessa transação com vários fragmentos.
waitingForVotesAguardando que os participantes respondam com voto para confirmar ou cancelar.
writingDecisionEscrevendo um registro local da decisão do coordenador de cometer ou cancelar com base em votos.
waitingForDecisionAckAguardando que os participantes reconheçam a decisão do coordenador de cometer ou cancelar.
deletingCoordinatorDocExcluindo o registro local da decisão de commit.
Disponível somente para as métricas de coordenação de cometimento.
currentOp.twoPhaseCommitCoordinator.commitStartTimeA data e a hora em que o commit começou.
Disponível somente para as métricas de coordenação de cometimento.
currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverUm booleano que indica se a coordenação de commit foi reiniciada devido ao failover no fragmento que está coordenando o commit.
If
hasRecoveredFromFailoveris true, then the times specified incurrentOp.twoPhaseCommitCoordinator.stepDurationsmay not be accurate for all steps.Disponível somente para as métricas de coordenação de cometimento.
currentOp.twoPhaseCommitCoordinator.stepDurationsA document that contains the duration, in microseconds, of the commit coordination
steps/statecompleted or in progress:"stepDurations" : { "writingParticipantListMicros" : Long(17801), "totalCommitDurationMicros" : Long(42488463), "waitingForVotesMicros" : Long(30378502), "writingDecisionMicros" : Long(15015), "waitingForDecisionAcksMicros" : Long(12077145), "deletingCoordinatorDocMicros" : Long(6009) }, If
currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoveris true, then the times specified instepDurationsmay not be accurate for all steps.Para um coordenador em um estado
inactive, o documento está vazio:"stepDurations" : { } Disponível somente para as métricas de coordenação de cometimento.
currentOp.twoPhaseCommitCoordinator.decisionUm documento que contém a decisão de cometer/abortar, por exemplo:
Para uma decisão de cometimento:
"decision" : { "decision" : "commit", "commitTimestamp" : Timestamp(1572034669, 3) } Para uma decisão de cancelamento:
"decision" : { "decision" : "abort", "abortStatus" : { "code" : 282, "codeName" : "TransactionCoordinatorReachedAbortDecision", "errmsg" : "Transaction exceeded deadline" } }
Disponível somente para as métricas de coordenação de cometimento.
currentOp.twoPhaseCommitCoordinator.deadlineA data e a hora em que o commit deve terminar.
Disponível somente para as métricas de coordenação de cometimento.
currentOp.opidThe identifier for the operation. You can pass this value to
db.killOp()inmongoshto terminate the operation.Aviso
Encerre as operações em execução com extrema cautela. Use apenas
db.killOp()para encerrar operações iniciadas por clientes e não encerre operações internas de banco de dados.
currentOp.activeUm valor booleano especificando se a operação começou. O valor é
truese a operação foi iniciada oufalsese a operação está ociosa, como uma conexão ociosa ou um thread interno que esteja ocioso no momento. Uma operação pode estar ativa mesmo que tenha cedido preferência a outra operação. Para alguns tópicos inativos em segundo plano, como umsignalProcessingThreadinativo, o MongoDB suprime vários campos vazios.
currentOp.secs_runningA duração da operação em segundos. O MongoDB calcula este valor subtraindo o tempo atual da hora de início da operação.
Only appears if the operation is running; i.e. if
activeistrue.
currentOp.microsecs_runningA duração da operação em microssegundos. O MongoDB calcula este valor subtraindo o tempo atual da hora de início da operação.
Only appears if the operation is running; i.e. if
activeistrue.
currentOp.opA string that identifies the specific operation type. Only present if
currentOp.typeisop.Os valores possíveis são:
"none""update""insert""query""command""getmore""remove""killcursors"
"query"operações incluem operações de leitura."command"As operações incluem a maioria dos comandos, comocreateIndexesefindAndModify.
currentOp.nsO namespace que a operação tem como alvo. Um namespace consiste no nome do banco de dados e o nome da coleção concatenado com um ponto (
.); isto é,"<database>.<collection>".
currentOp.commandUm documento contendo o objeto de comando completo associado a esta operação.
Por exemplo, a seguinte saída contém o objeto de comando para uma operação
findem uma collection denominadaitemsem um banco de dados denominadotest:"command" : { "find" : "items", "filter" : { "sku" : 1403978 }, ... "$db" : "test" } O seguinte exemplo de saída contém o objeto de comando para uma operação
getMoregerada por um comando com ID de cursor19234103609em uma collection denominadaitemsem um banco de dados denominadotest:"command" : { "getMore" : Long("19234103609"), "collection" : "items", "batchSize" : 10, ... "$db" : "test" }, Se o documento de comando exceder 1 kilobyte, o documento terá o seguinte formulário:
"command" : { "$truncated": <string>, "comment": <string> } O campo
$truncatedcontém um resumo de strings do documento, excluindo o campocommentdo documento, se presente. Se, mesmo assim, o resumo exceder 1 kilobyte, ele será ainda mais truncado, indicado por uma reticência (...) no final da string.O campo
commentestá presente se algum comentário foi passado para a operação. Um comentário pode ser anexado a qualquer comando de banco de dados.
currentOp.planSummaryEspecifica se o cursor utiliza um exame de collection (
COLLSCAN) ou uma verificação de índice (IXSCAN { ... }).O
IXSCANtambém inclui o documento de especificação do índice utilizado.
currentOp.prepareReadConflictsO número de vezes que a operação atual precisou aguardar uma transação preparada com uma gravação para cometer ou abortar.
Enquanto aguarda, a operação atual continua mantendo todas as travas e recursos de mecanismo de armazenamento necessários.
currentOp.writeConflictsO número de vezes que a operação atual entrou em conflito com outra operação de gravação no mesmo documento.
currentOp.cursorA document that contains the cursor information for
getmoreoperations; i.e. whereopisgetmore.If reporting on a
getmoreoperation before thegetmorehas accessed its cursor information, thecursorfield is not available.currentOp.cursor.noCursorTimeoutO sinalizador que indica que o cursor não expira quando ocioso; ou seja, quando o cursor tem a opção
noTimeoutdefinida.Se verdadeiro, o cursor não expira quando ocioso.
Se falso, o cursor expira quando ocioso.
currentOp.cursor.tailableO sinalizador que indica se o cursor é um cursor caudal para uma coleção limitada. Os cursores de ocorrências permanecem abertos após o cliente esgotar os resultados no cursor inicial.
currentOp.cursor.awaitDataO sinalizador que indica se o cursor tailable deve bloquear temporariamente um comando
getMoreno cursor enquanto aguarda novos dados, em vez de retornar nenhum dado.Para cursores não rastreáveis, o valor é sempre falso.
currentOp.cursor.originatingCommandO campo
originatingCommandcontém o objeto de comando completo (por exemplo,findouaggregate) que originalmente criou o cursor.
currentOp.waitingForLatchThe
waitingForLatchdocument is only available if the operation is waiting to acquire an internal locking primitive (a.k.a. a latch) or for an internal condition to be met.Por exemplo,
"waitingForLatch" : { "timestamp" : ISODate("2020-03-19T23:25:58.412Z"), "captureName" : "FutureResolution", }, Campo de SaídaDescriçãotimestamp
A data e hora em que a operação começou a aguardar.
nome da captura
O nome interno da seção onde a operação está bloqueada no momento.
Novidades na versão 4.2.2.
currentOp.locksThe
locksdocument reports the type and mode of locks the operation currently holds. The possible lock types are as follows:Bloquear tipoDescriçãoParallelBatchWriterModeRepresenta um bloqueio para o modo de escrita em lote paralelo.
Em versões anteriores, as informações do PBWM foram relatadas como parte das informações de bloqueio do
Global.ReplicationStateTransitionRepresenta o bloqueio obtido para transições de estado membro do conjunto de réplicas.
GlobalRepresenta bloqueio global.
DatabaseRepresenta bloqueio de banco de dados.
CollectionRepresenta bloqueio de coleção.
MutexRepresenta mutex.
MetadataRepresenta bloqueio de metadados.
oplogRepresenta bloqueio no oplog.
Veja os modos possíveis:
Modo de bloqueioDescriçãoRRepresenta bloqueio compartilhado (S).
WRepresenta bloqueio exclusivo (X).
rRepresenta bloqueio de Intent Shared (IS).
wRepresenta bloqueio Intent Exclusive (IX).
currentOp.admissionPriorityPara uso interno. O valor é a prioridade que uma operação tem ao tentar adquirir um ticket para realizar uma ação do mecanismo de armazenamento.
Os valores possíveis são: "baixo", "normal" e "imediato". Somente operações com um valor "baixo" são relatadas.
Exemplo de saída
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: {} } O valor
admissionPrioritytambém é relatado no registro lento.Novidades na versão 6.3.
currentOp.waitingForLockReturns a boolean value.
waitingForLockistrueif the operation is waiting for a lock andfalseif the operation has the required lock.
currentOp.msgThe
msgprovides a message that describes the status and progress of the operation. In the case of indexing or mapReduce operations, the field reports the completion percentage.
currentOp.progressReports on the progress of mapReduce or indexing operations. The
progressfields corresponds to the completion percentage in themsgfield. Theprogressspecifies the following information:
currentOp.killPendingRetorna
truese a operação estiver sinalizada para encerramento. Quando encontra seu próximo ponto de encerramento seguro, a operação termina.
currentOp.numYieldsnumYieldsé um contador que relata o número de vezes que a operação rendeu para permitir que outras operações sejam concluídas.Normalmente, as operações são realizadas quando precisam acessar dados que o MongoDB ainda não leu completamente na memória. Isso permite que outras operações que tenham dados na memória sejam concluídas rapidamente enquanto o MongoDB lê os dados para a operação de produção.
currentOp.dataThroughputLastSecondQuantidade de dados (em MiB) processados pela operação
validateno último segundo. Disponível somente para uma operaçãovalidateque esteja digitalizando documentos no momento. Por exemplo:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
currentOp.dataThroughputAverageA quantidade média de dados (em MiB) processados pela operação
validate. Disponível somente para uma operaçãovalidateque esteja digitalizando documentos no momento. Por exemplo:"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 se o banco de dados está bloqueado para
fsync write/snapshot.Only appears if locked; i.e. if
fsyncLockistrue.
currentOp.infoInformation regarding how to unlock database from
db.fsyncLock(). Only appears iffsyncLockistrue.
currentOp.lockStatsFor each lock type and mode (see
currentOp.locksfor descriptions of lock types and modes), returns the following information:currentOp.lockStats.acquireCountNúmero de vezes que a operação adquiriu a trava no modo especificado.
currentOp.lockStats.acquireWaitCountNumber of times the operation had to wait for the
acquireCountlock acquisitions because the locks were held in a conflicting mode.acquireWaitCountis less than or equal toacquireCount.
currentOp.lockStats.timeAcquiringMicrosTempo cumulativo em microssegundos que a operação teve que esperar para adquirir as travas.
timeAcquiringMicrosdivided byacquireWaitCountgives an approximate average wait time for the particular lock mode.
currentOp.waitingForFlowControlUm booleano que indica se a operação está em processo de espera pelo controle de fluxo.
currentOp.flowControlStatsAs estatísticas de controle de fluxo desta operação.
currentOp.totalOperationTimeElapsedSecsO tempo total decorrido, em segundos, para a operação de refragmentação atual. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente se uma operação de refragmentação estiver ocorrendo.
Novidade na versão 5.0.
A partir do MongoDB 6.1, essa métrica também está disponível no coordenador durante a refragmentação.
currentOp.updatesAppliedO número de atualizações aplicadas.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidades na versão 6.1.
currentOp.remainingOperationTimeEstimatedSecsremainingOperationTimeEstimatedSecs: tempo restante estimado em segundos para a operação de refragmentação atual. É retornado como-1quando uma nova operação de refragmentação é iniciada.Começando no:
MongoDB 5.0, mas antes do MongoDB 6.1, o
remainingOperationTimeEstimatedSecssó está disponível em um shard de receptor durante uma operação de refragmentação.MongoDB 6.1,
remainingOperationTimeEstimatedSecstambém está disponível no coordenador durante uma operação de refragmentação.
A operação de refragmentação executa estas fases na ordem:
A fase do clonagem duplica os dados da collection atual.
A fase de atualização aplica quaisquer operações de gravação pendentes à collection refragmentada.
remainingOperationTimeEstimatedSecsestá definido para uma estimativa de tempo pessimista:A estimativa de tempo da fase de recuperação é definida como o tempo da fase de clonagem, que é um tempo relativamente longo.
Na prática, se houver apenas algumas operações de escrita pendentes, o tempo de fase de recuperação real é relativamente curto.
Novidade na versão 5.0.
currentOp.allShardsLowestRemainingOperationTimeEstimatedSecsCalculada em todos os shards, é a estimativa mais baixa do número de segundos restantes.
Presente apenas em um coordenador quando uma operação de refragmentação está em andamento.
Novidades na versão 6.1.
currentOp.allShardsHighestRemainingOperationTimeEstimatedSecsCalculada em todos os shards, é a estimativa mais alta do número de segundos restantes.
Presente apenas em um coordenador quando uma operação de refragmentação está em andamento.
Novidades na versão 6.1.
currentOp.approxDocumentsToCopyO número aproximado de documentos a serem copiados dos shards do doador para os shards do destinatário durante a operação de refragmentação. Esse número é uma estimativa que é definida no início da operação de refragmentação e não muda depois de definida. O número é definido como 0 quando uma nova operação de refragmentação é iniciada. É possível que
$currentOp.documentsCopiede$currentOp.bytesCopiedacabem excedendo$currentOp.approxDocumentsToCopye$currentOp.approxBytesToCopy, respectivamente, se a distribuição de dados após a refragmentação não for perfeitamente uniforme.Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.documentsCopiedO número de documentos copiados de shards de doador para shards de destinatários durante a operação de refragmentação. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.approxBytesToCopyO número aproximado de bytes a serem copiados dos shards do doador para os do destinatário durante a operação de refragmentação. Esse número é uma estimativa que é definida no início da operação de refragmentação e não muda depois de definida. O número é definido como 0 quando uma nova operação de refragmentação é iniciada. É possível que
$currentOp.documentsCopiede$currentOp.bytesCopiedacabem excedendo$currentOp.approxDocumentsToCopye$currentOp.approxBytesToCopy, respectivamente, se a distribuição de dados após a refragmentação não for perfeitamente uniforme.Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.bytesCopiedO número de bytes copiados dos shards doadores para os shards receptores durante a operação de refragmentação. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.countWritesToStashCollectionsO número de escritas nas collections de estoque do destinatário.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidades na versão 6.1.
currentOp.countWritesDuringCriticalSectionO número de tentativas de escrita durante a seção crítica do doador.
Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.
Novidades na versão 6.1.
currentOp.countReadsDuringCriticalSectionO número de tentativas de leitura durante a seção crítica do doador.
Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.
Novidades na versão 6.1.
currentOp.deletesAppliedO número de exclusões aplicadas à collection de refragmentação temporária. Cada entrada de oplog que envolve uma exclusão incrementa o contador em 1.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidades na versão 6.1.
currentOp.insertsAppliedO número de inserções aplicadas à collection de refragmentação temporária. Cada entrada do oplog que envolve uma inserção incrementa o contador em 1.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidades na versão 6.1.
currentOp.totalCopyTimeElapsedSecsO tempo total decorrido, em segundos, para tarefas contínuas de cópia de dados de shards do doador para shards do destinatário para a operação de atualização atual. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
A partir do MongoDB 6.1, essa métrica também está disponível no coordenador durante a refragmentação.
currentOp.oplogEntriesFetchedO número de entradas obtidas do oplog para a operação de refragmentação atual. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.oplogEntriesAppliedO número de entradas aplicadas ao oplog para a operação de refragmentação atual. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.totalApplyTimeElapsedSecsO tempo total decorrido, em segundos, para a etapa de aplicação da operação de atualização atual. Na etapa de aplicação, os fragmentos do destinatário aplicam entradas de oplog para modificar seus dados com base em novos registros recebidos de fragmentos do doador. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
A partir do MongoDB 6.1, essa métrica também está disponível no coordenador durante a refragmentação.
currentOp.countWritesDuringCriticalSectionO número de gravações realizadas na seção crítica para a operação de refragmentação atual. A seção crítica evita novas gravações recebidas na collection que está sendo refragmentada. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
currentOp.totalCriticalSectionTimeElapsedSecsO tempo total decorrido, em segundos, para a seção crítica da operação de refragmentação atual. A seção crítica evita novas gravações recebidas na collection sendo refragmentada. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.
Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.
Novidade na versão 5.0.
A partir do MongoDB 6.1, essa métrica também está disponível no coordenador durante a refragmentação.
currentOp.donorStateO estado atual de um shard doador para a operação de refragmentação. O estado é definido como
unusedquando uma nova operação de refragmentação é iniciada.Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.
EstadoDescriçãounusedA operação de refragmentação está prestes a ser iniciada ou se recuperando de um failover primário.
preparing-to-donateO shard do doador está se preparando para doar dados para os shards do destinatário.
donating-initial-dataO shard do doador está doando dados para os shards do destinatário.
donating-oplog-entriesO shard do doador está doando entradas do oplog para os shards do destinatário.
preparing-to-block-writesO shard do doador está prestes a impedir a entrada de novas operações de gravação na collection que está sendo refragmentada.
errorOcorreu um erro durante a operação de refragmentação.
blocking-writesO shard do doador está evitando novas operações de escrita recebidas e o shard do doador notificou todos os shards do destinatário de que novas gravações recebidas são evitadas.
doneO shard do doador descartou a collection fragmentada antiga e a operação de refragmentação foi concluída.
Novidade na versão 5.0.
currentOp.recipientStateO estado atual de um shard destinatário para uma operação de refragmentação. O estado é definido como
unusedquando uma nova operação de refragmentação é iniciada.Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.
EstadoDescriçãounusedA operação de refragmentação está prestes a ser iniciada ou se recuperando de um failover primário.
awaiting-fetch-timestampO shard do destinatário está esperando que os shards do doador estejam preparados para doar seus dados.
creating-collectionO shard do destinatário está criando a nova collection fragmentada.
cloningO shard do destinatário está recebendo dados dos shards do doador.
applyingO shard do destinatário está aplicando entradas do oplog para modificar sua cópia dos dados com base nas novas gravações recebidas dos shards do doador.
errorOcorreu um erro durante a operação de refragmentação.
strict-consistencyO shard do destinatário tem todas as alterações de dados armazenadas em uma collection temporária.
doneA operação de refragmentação foi concluída.
Novidade na versão 5.0.
currentOp.coordinatorStateO estado do coordenador de refragmentação para a operação de refragmentação atual. O coordenador de refragmentação é uma operação executada no servidor de configuração primary. O estado é definido como
unusedquando uma nova operação de refragmentação é iniciada.Presente somente no servidor de configuração de coordenação.
EstadoDescriçãounusedA operação de refragmentação está prestes a ser iniciada ou se recuperando de um failover primário.
initializingO coordenador de refragmentação inseriu o documento do coordenador no
config.reshardingOperationse adicionou oreshardingFieldsà entradaconfig.collectionspara a collection original.preparing-to-donateO coordenador de refragmentação
criou uma entrada
config.collectionspara a collection de refragmentação temporária.inseriu entradas em
config.chunkspara faixas baseadas na nova chave de shard.inseriu entradas em
config.tagspara quaisquer zonas associadas à nova chave de shard.
O coordenador informa aos shards participantes para que iniciem a operação de refragmentação. O coordenador então aguarda até que todos os shards doadores tenham escolhido um
minFetchTimestampe estejam prontos para doar.cloningO coordenador de refragmentação informa os shards do doador para doar dados aos shards do destinatário. O coordenador espera que todos os destinatários terminem de clonar os dados do doador.
applyingO coordenador de refragmentação informa aos shards do destinatário que modifiquem suas cópias dos dados com base nas novas gravações recebidas dos shards do doador. O coordenador espera que todos os destinatários terminem de aplicar as entradas do oplog.
blocking-writesO coordenador de refragmentação informa os shards doadores para impedir novas operações de gravação de entrada na collection que está sendo redistribuída. O coordenador então espera que todos os destinatários tenham todas as alterações de dados.
abortingOcorreu um erro irrecuperável durante a operação de refragmentação ou o comando
abortReshardCollection(ou o métodosh.abortReshardCollection()) foi executado.committingO coordenador de refragmentação remove a entrada
config.collectionspara a collection de refragmentação temporária. O coordenador então adiciona orecipientFieldsà entrada da collection de origem.Novidade na versão 5.0.
currentOp.collUuidO UUID da coleção amostrada.
Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.
currentOp.startTimeA hora em que a amostragem de query começou.
Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.
currentOp.samplesPerSecondO número máximo de queries a serem amostradas por segundo.
Em um cluster fragmentado, isso é relatado em
mongosem vez demongod. Em um conjunto de réplicas, isso é relatado emmongod.Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.
currentOp.sampledReadsCountO número de amostras de queries de leitura.
Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.
currentOp.sampledWritesCountO número de queries de escrita como amostras.
Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.
currentOp.sampledReadsBytesO tamanho das amostras de queries de leitura, em bytes.
Em um conjunto de réplicas, isso é relatado a cada
mongod.Em um cluster fragmentado, isso só foi relatado em
mongodcom--shardsvr.Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.
currentOp.sampledWritesBytesTamanho total das queries de escrita amostradas, em bytes.
Em um conjunto de réplicas, isso é relatado a cada
mongod.Em um cluster fragmentado, isso só foi relatado em
mongodcom--shardsvr.Este campo só aparece em documentos relacionados à amostragem de query. Para obter detalhes, consulte Queries de amostra.
Novidades na versão 7.0.