日期:2014-05-16  浏览次数:20374 次

mongodb系列之-管理mongodb->db.currentOp()

管理mongodb->db.currentOp(), 绝对是原创...

? ? ? ? 今天公司的dba在内部分享了针对mysql上具体的每个crud语句操作如何进行控制管理(利用的inntop工具),挺好的。这里,我也献丑下,在mongodb中如何管理具体的每个crud操作(比如某个查询语句慢,太占资源,直接可以将其kill掉,这貌似很暴力哈,不过没关系,有时候不得已而为之...不过mongodb中可不是用第三方的工具哦,而是自家实现的功能,顶...)

? ? ? ?currentOp是个好东西,顾名思义,就是当前的操作。在mongodb中可以查看当前数据库上此刻的操作语句信息,包括insert/query/update/remove/getmore/command等多种操作。直接执行db.currentOp()一般返回一个空的数组,我们可以指定一个参数true,这样就返回用户connections与系统cmmand相关的操作。下面看个列子:

?

? ? ? 执行命令会返回一个inprog数组,数组中每个元素都是一个nested document,以其中一个为例,解释下具体意思:

{

? ? ? ? ?"opid" : 37432,//此操作的id

? ? ? ? ?"active" : false,//此操作是否处于活动状态

? ? ? ? ?"secs_running" : 0,//此操作运行了多少秒

? ? ? ? ?"op" : "query",//具体的操作行为,包括(insert/query/update/remove/getmore/command)

? ? ? ? ?"ns" : "category.categoryDocs",//此操作的命名空间,数据库名.集合名

? ? ? ? //具体的操作语句

? ? ? ? ?"query" : {

? ? ? ? ? ? ? ? ?"cname" : "孢子植物",

? ? ? ? ? ? ? ? ?"sort" : 2

? ? ? ? ?},

? ? ? ? ?"client" : "*.*.*.*:21758",//连接的客户端信息

? ? ? ? ?"desc" : "conn724",//数据库连接描述

? ? ? ? ?"threadId" : "0x78156940",//线程id

? ? ? ? ?"connectionId" : 724,//数据库连