db.killOp()
Nesta página
Descrição
db.killOp(opid)
Termina uma operação conforme especificado pelo ID da operação. Para encontrar operações e seus ID correspondentes, consulte
$currentOp
oudb.currentOp()
.O método
db.killOp()
tem o seguinte parâmetro:ParâmetroTipoDescriçãoop
númeroUm 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.
Cluster fragmentado
Eliminar operações de leitura
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:
Eliminar operações de gravação
- 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
nomongos
para matar a operação de gravação em fragmentos.Execute o pipeline de agregação
$currentOp
nomongos
para localizar olsid
(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" } ] ) Utilizando as informações do
lsid
retornadas, emita o comandokillSessions
nomongos
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.
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", ... }, Usando as informações de opid, emita
db.killOp()
nomongos
para encerrar a operação nos fragmentos.db.killOp("shardB:79014"); db.killOp("shardA:100813");
Controle de acesso
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
.