Docs 菜单

Docs 主页开发应用程序MongoDB Manual

终止正在运行的操作

在此页面上

  • 概述
  • 可用程序

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

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

mongosh开始,使用以下方法为此查询设置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 } )

到达 maxTimeMS 的操作将返回 MaxTimeMSExpired 错误。

db.killOp() 方法在下一个中断点中断正在运行的操作。db.killOp() 按操作 ID 标识目标操作。

db.killOp(<opId>)

警告

终止正在运行的操作时要格外小心。仅使用 db.killOp() 来终止客户端发起的操作,而不会终止数据库内部操作。

从 MongoDB 4.0 开始,killOp 命令可以在 mongos 上运行,并且可以终止跨越集群分片的查询(例如读取操作)。当要终止的操作是写操作时,mongoskillOp 命令不会传播到分片。

有关针对分片集群的终止操作的更多信息,请参阅:

有关如何列出 mongos 上活动的分片操作的信息,请参阅 $currentOp 中的 localOps 参数。

← 管理 mongod 进程

在此页面上