Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

db.killOp()

Nesta página

  • Descrição
  • Cluster fragmentado
  • Controle de acesso
db.killOp(opid)

Termina uma operação conforme especificado pelo ID da operação. Para encontrar operações e seus ID correspondentes, consulte $currentOp ou db.currentOp().

O método db.killOp() tem o seguinte parâmetro:

Parâmetro
Tipo
Descrição
op
número
Um ID de operação.

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.

O método db.killOp() pode ser executado em um mongos e pode eliminar queries (operações de leitura) que estão sendo executadas em mais de um shard em um cluster.

Por exemplo, para matar uma operação de consulta em um agrupamento fragmentado:

Dentro de uma sessão

Os drivers do MongoDB associam todas as operações a uma sessão do servidor, com exceção das gravações não reconhecidas.

Se a operação de gravação estiver associada a uma sessão, você poderá usar o comando killSessions no mongos para matar a operação de gravação em fragmentos.

  1. Execute o pipeline de agregação $currentOp no mongos para localizar o lsid (ID da sessão lógica).

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { "op" : "update", "ns": "mydb.someCollection" }
    ] )
    1. Utilizando as informações do lsid retornadas, emita o comando killSessions no mongos para matar a operação nos fragmentos.

      db.adminCommand( { killSessions: [
      { "id" : UUID("80e48c5a-f7fb-4541-8ac0-9e3a1ed224a4"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") }
      ] } )
Sem uma sessão

Se a operação de gravação não estiver associada a uma sessão, você deverá localizar e matar a operação em todos os fragmentos associados à gravação.

  1. Em um mongos, execute o aggregation pipeline $currentOp para localizar o(s) opid(s) da query nos fragmentos:

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    ] )

    Ao executar em um mongos, $currentOp retorna as opções no formato de "<shardName>:<opid on that shard>"; por exemplo,

    {
    "shard" : "shardB",
    ..
    "opid" : "shardB:79214",
    ...
    },
    {
    "shard" : "shardA",
    ..
    "opid" : "shardA:100913",
    ...
    },
  2. Usando as informações de opid, emita db.killOp() no mongos para encerrar a operação nos fragmentos.

    db.killOp("shardB:79014");
    db.killOp("shardA:100813");

Em sistemas executados com authorization , para eliminar operações que não pertencem ao usuário, o usuário deve ter acesso que inclua a ação de privilégio killop .

Em instâncias do mongod , os usuários podem matar suas próprias operações mesmo sem a ação de privilégio do killop .

Dica

Veja também:

← db.hostInfo()