killOp
版本 3.2 中的新增功能。
定义
killOp
终止由操作ID指定的操作。
mongosh
提供db.killOp()
助手。 要查找操作及其相应的 ID,请参阅$currentOp
或db.currentOp()
。killOp
命令必须针对admin
数据库运行。要运行 killOp,请使用
db.runCommand( { <command> } )
方法。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
此命令在 M 0 、 M 2 、 M 5和 M 10 + 集群中提供有限支持。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令采用以下形式:
{ "killOp": 1, "op": <opid>, comment: <any> }
命令字段
Parameter | 类型 | 说明 |
---|---|---|
op | 数字 | 操作 ID。 |
comment | any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
警告
终止正在运行的操作时要格外小心。仅使用 killOp
来终止客户端发起的操作,而不会终止数据库内部操作。
行为
请勿使用killOp
终止副本集或分片的集群中正在进行的索引构建。 在 主节点 (primary nodedropIndexes
in the replica set) 节点上使用 删除索引。请参阅中止正在进行的索引构建。
访问控制
在使用authorization
运行的系统上,要终止不属于用户的操作,用户必须具有包括killop
特权操作的访问权限。
分片集群
killOp
命令可以在mongos
上运行,并且可以终止查询(即 读集群)。 killOp
当要终止的操作是写入操作时,mongos
中的 命令不会传播到分片。
有关如何列出 mongos
上活动的分片操作的信息,请参阅 $currentOp
中的 localOps
参数。
有关针对分片集群的终止操作的更多信息和示例,请参阅:
例子
以下示例使用killOp
来定位 opid 为3478
的正在运行的操作。
db.adminCommand( { "killOp": 1, "op": 3478 } )
操作返回以下结果:
{ "info" : "attempting to kill op", "ok" : 1 }
killOp
如果成功将指定操作标记为终止,则报告成功。 操作在到达适当的中点之前可能不会实际终止。 使用$currentOp
或db.currentOp()
确认目标操作已终止。