参考 > 参考 > mongo Shell方法 > 数据库方法 > db.killOp()
db.
killOp
(opid )¶终止操作ID指定的操作。要查找操作及其相应的ID,请参阅$currentOp
或db.currentOp()
。
该db.killOp()
方法具有以下参数:
参数 | 类型 | 描述 |
---|---|---|
op |
数 | 操作ID。 |
警告
极其谨慎地终止正在运行的操作。仅用于
db.killOp()
终止客户端发起的操作,而不终止内部数据库操作。
该db.killOp()
方法可以在上运行,
mongos
并且可以终止在集群中多个分片上运行的查询(读取操作)。
例如,要取消对MongoDB 4.0+分片群集的查询操作:
在同一 mongos
地方的客户端发出的查询,通过运行聚合管道找到查询操作杀的OPID $currentOp
用:localOps:
true
重要
您必须在客户端发出查询的同一
mongos
位置发出此聚合操作。
找到要db.killOp()
终止的查询操作后,在上发出
opid mongos
:
也可以看看
中的localOps
参数$currentOp
。
或者,您可以从运行该操作的分片成员中查找并终止该读取操作。MongoDB 4.0+会将kill操作传播到其他分片和
mongos
实例:
在运行该操作的分片之一上,找到要杀死的查询操作的opid:
找到要db.killOp()
终止的查询操作后,在分片成员上发出opid 问题
:
MongoDB 4.0+将kill操作传播到其他分片和mongos
实例。
要终止在3.6(或更早版本)分片群集上运行的查询,必须终止与该查询关联的所有分片上的操作。
从中mongos
运行汇总管道,
$currentOp
以找到分片上查询操作的opid:
在a上运行时mongos
,$currentOp
以以下格式返回opid ;例如"<shardName>:<opid on that
shard>"
使用opid信息,db.killOp()
在上
发出命令以终止mongos
对分片的操作。
从MongoDB 3.6开始,MongoDB驱动程序将所有操作与服务器会话相关联,但未确认的写入除外。
如果写入操作与会话相关联,则可以使用上的
killSessions
命令mongos
杀死各个分片上的写入操作。
运行聚合管道$currentOp
上mongos
找到
lsid
(逻辑会话ID)。
使用返回的lsid
信息,在killSessions
上发出
命令
mongos
以终止对分片的操作。
$currentOp
在mongos
或单个分片上运行聚合管道,找到
lsid
(逻辑会话ID)。
使用返回的lsid信息,在killSessions
上发出命令以
终止
mongos
对分片的操作。
如果写入操作未与会话关联,则必须在与写入关联的所有分片上找到并终止该操作。
从中mongos
运行汇总管道,
$currentOp
以找到分片上查询操作的opid:
在a上运行时mongos
,$currentOp
以以下格式返回opid ;例如"<shardName>:<opid on that
shard>"
使用opid信息,db.killOp()
在上
发出命令以终止mongos
对分片的操作。