On this page
终止正在运行的操作
在本页面
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()。