参考 > 参考 > 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对分片的操作。