终止正在运行的操作

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

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

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

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

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

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

db.killOp(<opId>)

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

 killOp命令可以在mongos 上运行,并且可以终止集群中跨分片的查询(即读取操作)。当要终止的操作是写操作时,killOp 中的mongos 命令不会传播到分片。
 

{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }

#allUsers:如果设置为 false$currentOp 仅报告属于运行该命令的用户的操作/空闲连接/空闲游标/空闲会话。

#idleSessions

#localOps:布尔值。如果将在 mongos 上运行的聚合设置为true ,则 $currentOp 仅报告在该 mongos 上本地运行的操作。如果是 false,则 $currentOp 报告在分片上运行的操作。

 

currentOp操作会输出很多东西,可根据字段筛选一些需要的出来

 $currentOp.opid

该操作的标识符。您可以将此值传递给db.killOp() 中的 ,以终止操作。

$currentOp.microsecs_running 操作的持续时间(以微秒计)。MongoDB 通过从操作开始时间减去当前时间来计算此值。

$currentOp.secs_running 操作的持续时间(以秒计)。MongoDB 通过从操作开始时间减去当前时间来计算此值。

mongos> db.aggregate( [    
... { $currentOp : { allUsers: true, idleConnections: false } },    
... { $match : { ns: "vinodh.testColl", microsecs_running: {$gt: 10000} }}, 
... {$project: { _id:0, host:1, opid:1, secs_running: 1, op:1, ns:1, waitingForLock: 1, numYields: 1  } } ] )
{ "host" : "bm-support01.bm.int.percona.com:54012", "opid" : "shard01:777387", "secs_running" : NumberLong(0), "op" : "insert", "ns" : "vinodh.testColl", "numYields" : 0, "waitingForLock" : false }

#$project:value值为0抑制字段输出,为1,允许字段输出。

var  ops = db.currentOp().inprog;
for(i = 0; i < ops.length; i++){
        var opid = ops[i].opid;
        db.killOp(opid);
        print("Stopping op #"+opid)
}


mongo 10.9.1.1:27107/admin -u root -p '1111'< /tmp/kill.js

 一些常用的字段

 locks

waitingForLock

 

 
posted @ 2024-07-11 18:08  wongchaofan  阅读(0)  评论(0编辑  收藏  举报