1 . 查看活动进程
查看活动进程,便于了解系统正在做什么,以便做下一步判断,操作如下:
> db.currentOp() // 等同于: db.$cmd.sys.inprog.findOne() { inprog: [ { "opid" : 18 , "op" : "query" , "ns" : "mydb.votes" , "query" : "{ score : 1.0 }" , "inLock" : 1 } } |
字段说明:
opid: 操作进程号. 如上进程的ID是18
op: 操作类型(查询,更新等)
ns: 命名空间, 指操作的是哪个对象. 如上"mydb.votes",操作对象是mydb数据库中的votes表
query: 如果操作类型是查询的话,这里将显示具体的查询内容. 如上对mydb.votes表的查询条件是"score =1.0"
inlock: 锁的类型,指明是读锁还是写锁. -1:读锁 0:无锁 1:写锁
2 . 结束进程
如果某个异常是由于某个进程产生的,那么一般DBA都会毫不留情的杀掉这个罪魁祸首的进程,操作如下:
> db.killOp(18) > // 等同于: db.$cmd.sys.killop.findOne({op:18}) |
即通过执行”currentOp“发现一个异常进程,进程号18,则”killOp“将其终止。
注意: 不要kill内部发起的操作,比如说replica set发起的sync操作等。 |