终止正在运行的操作

在本页面

Overview

MongoDB 提供了两种便利来终止正在运行的操作:maxTimeMS()db.killOp()。根据需要使用这些操作来控制 MongoDB 部署中的操作行为。

Available Procedures

maxTimeMS

2.6 版的新功能。

maxTimeMS()方法设置操作的时间限制。当操作达到指定的时间限制时,MongoDB 在下一个interrupt point中断操作。

终止查询

mongo shell 中,使用以下方法为此查询设置 30 毫秒的时间限制:

db.location.find( { "town": { "$regex": "(Pine Lumber)",
                              "$options": 'i' } } ).maxTimeMS(30)

终止命令

考虑使用distinct可能会长时间运行的操作,以返回每个具有city键的不同collection字段:

db.runCommand( { distinct: "collection",
                 key: "city" } )

您可以将maxTimeMS字段添加到命令文档中,以为该操作设置 45 毫秒的时间限制:

db.runCommand( { distinct: "collection",
                 key: "city",
                 maxTimeMS: 45 } )

db.getLastError()db.getLastErrorObj()将为错误的选项返回错误:

{ "n" : 0,
  "connectionId" : 1,
  "err" : "operation exceeded time limit",
  "ok" : 1 }

killOp

db.killOp()方法在下一个interrupt point处中断正在运行的操作。 db.killOp()通过操作 ID 标识目标操作。

db.killOp(<opId>)

Warning

极其谨慎地终止正在运行的操作。仅使用db.killOp()来终止由 Client 端启动的操作,而终止内部数据库操作。

Related

要返回正在运行的操作的列表,请参见db.currentOp()