db.currentOp顾名思义,就是当前正在执行的操作。信息包括insert/query/update/remove/getmore/command等等。
#查询正在执行任务命令
db.currentOp(true)
#命令输出
> db.currentOp()
{ "inprog" :
[
{
"opid" : 3434473, # 操作的id
"active" : <boolean>, # 是否处于活动状态
"secs_running" : 0, # 操作运行了多少秒
"op" : "<operation>", # 具体的操作行为,包括(insert/query/update/remove/getmore/command)
"ns" : "<database>.<collection>", # 操作的命名空间,如:数据库名.集合名
"query" : { # 具体的操作语句
},
"client" : "<host>:<outgoing>", # 连接的客户端信息
"desc" : "conn57683", # 数据库连接描述
"threadId" : "0x7f04a637b700", # 线程id
"connectionId" : 57683, # 数据库连接id
"locks" : { # 锁的相关信息
"^" : "w",
"^local" : "W",
"^<database>" : "W"
},
"waitingForLock" : false, # 是否在等待并获取锁,
"msg": "<string>"
"numYields" : 0,
"progress" : {
"done" : <number>,
"total" : <number>
}
"lockStats" : {
"timeLockedMicros" : { # 此操作获得以下锁后,把持的微秒时间
"R" : NumberLong(), # 整个mongodb服务实例的全局读锁
"W" : NumberLong(), # 整个mongodb服务实例的全局写锁
"r" : NumberLong(), # 某个数据库实例的读锁
"w" : NumberLong() # 某个数据库实例的写锁
},
"timeAcquiringMicros" : { # 此操作为了获得以下的锁,而耗费等待的微秒时间
"R" : NumberLong(), # 整个mongodb服务实例的全局读锁
"W" : NumberLong(), # 整个mongodb服务实例的全局写锁
"r" : NumberLong(), # 某个数据库实例的读锁
"w" : NumberLong() # 某个数据库实例的写锁
}
}
},
.....
]
}
MongoDB出现负载异常或业务请求无响应,已经影响到现网业务的情况下,可以通过该命令查询到耗时(关注指标:secs_running)很长的操作,然后将异常操作kill掉,命令如下:
db.killOp(opid)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。