`
tangzhibin
  • 浏览: 20678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

 

db.currentOp(true) 会返回很多信息,

	{ "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()//某个数据库实例的写锁
                             }
                     }
             },
             .....
			
		] 
	}
	

 

 

注:

1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s) 

1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s) 

 

 

 

比如可以获取当前操作中,

--已停止活动 并且操作行为为query的信息

db.currentOp(true).inprog.forEach(
   function(opDoc){//opDoc其实是返回的每个op操作对象
     if(!opDoc.active && opDoc.op=='query')
        printjson(opDoc)
     }
 )

 

 

 --正在进行中 并且操作行为为query的信息

 db.currentOp(true).inprog.forEach(
   function(opDoc){//opDoc其实是返回的每个op操作对象
     if(opDoc.active && opDoc.op=='query')
        printjson(opDoc)
     }
 )

 

 

 通过以上监控如果发现某个操作比较慢,还可以对其进行kill:

   db.killOp(opid) //kill当前的操作 opid为具体的操作id号,当然了,只能kill正在进行中的

分享到:
评论

相关推荐

    mongodb-linux-x86_64-2.2.6.tgz

    3. 管理命令:MongoDB提供了一系列的管理命令,如`db.stats()`查看数据库状态,`use &lt;dbname&gt;`切换数据库。 4. 索引管理:创建索引以优化查询性能,如`db.collection.createIndex({key:1})`。 5. 安全配置:启用身份...

    mongodb-linux-x86_64-rhel62-4.0.5.tgz

    10. **监控和诊断**:通过`db.currentOp()`和`serverStatus`命令可以查看数据库的操作和系统状态,方便进行性能调优和问题排查。 在部署这个tgz文件时,你需要先将其解压,然后按照官方文档的指导配置环境变量、...

    MongoDB 使用手册-中文版.docx

    - `db.currentOp()`:查看当前操作 - `db.dropDatabase()`:删除当前数据库 - `db.eval(func, args)`:执行服务器端代码 - `db.getCollection(name)`:获取集合 - `db.getLastError()`:获取最后一个错误消息 ...

    mongodb-win32-i386-3.2.4-signed.zip

    7. **新的命令和查询优化**:此版本引入了一些新的管理命令,如`listDatabases`和`currentOp`,同时优化了查询性能,比如索引的使用更加灵活。 8. **性能提升**:3.2版本对写入性能进行了优化,尤其是批量插入操作...

    mongodb-linux-x86 3.2.0

    6. **监控和诊断工具**:新增和改进了一些监控和诊断工具,如`db.serverStatus()`和`db.currentOp()`,帮助管理员更好地监控和诊断数据库运行状态。 在Linux环境下部署MongoDB 3.2.0,你需要完成以下步骤: 1. **...

    MongoDB数据库管理

    - 查看活动进程:`db.currentOp()` 或 `db.$cmd.sys.inprog.findOne()`。 - 结束进程:`db.killOp(opid)`。 - 查看服务器统计信息:`db.runCommand({"serverStatus":1})` 或 `db.stats()`。 #### 四、数据空间...

    常用的MongoDB操作.doc

    MongoDB提供了任务操作来停止某个操作,例如,可以使用db.currentOp()命令来获取当前操作的列表,例如:mongos&gt; db.currentOp()。然后,可以使用db.killOp命令来停止某个操作,例如:mongos&gt; db.killOp("shard0001:...

    mongodb的常用命令

    - `db.currentOp()`:查看当前系统中运行的操作。 - `db.killOp(opid)`:结束指定的操作进程。 - `ensureIndex`:创建索引,如`db.c.ensureIndex({age: 1})`为`age`字段创建升序索引。 14. **索引操作**: - 在...

    MongoDB_命令.docx 命令集合

    MongoDB提供了丰富的数据库管理功能,如`db.addUser()`用于添加用户权限,`db.dropDatabase()`删除当前数据库,`db.createCollection()`创建新的集合,`db.getCollectionNames()`获取所有集合名称,`db.currentOp()`...

    mongodb-sa-demos

    10. **监控与诊断**: 通过 MongoDB 的内置命令和工具,如 `db.serverStatus()` 和 `db.currentOp()` 监控系统状态,识别性能瓶颈,进行问题诊断。 11. **备份与恢复**: 定期备份是任何数据库管理策略的重要部分。你...

    【老版本】MongoDB+Linux+2.6.12

    - 使用`db.currentOp()`检查当前操作,诊断阻塞或慢查询。 - 通过`mongotop`查看每个集合的读写操作统计。 6. 社区支持与更新: - 老版本的MongoDB可能不再接收安全更新,因此建议定期升级到最新稳定版本,以...

    nosql实验七 MongoDB的管理.docx

    * 查看当前操作:`db.currentOp()` * 结束进程:`db.killOp(110)` MongoDB 监控 MongoDB 提供了多种监控工具,包括: * Mongostat:mongostat 命令可以监控 MongoDB 的状态,包括插入、查询、更新、删除和命令的...

    mongodb-win32-i386-2.4.9(2)

    10. **监控和诊断**:MongoDB 2.4 提供了更丰富的监控和诊断功能,例如 `db.currentOp()` 命令可以查看当前数据库的操作状态,有助于性能调优和问题排查。 11. **日志管理**:可以通过配置参数控制 MongoDB 的日志...

    MongoDB 语法使用小结

    - `db.currentOp()`:查看当前数据库的操作详情。 - `db.killOp()`:停止当前操作。 - `db.getProfilingLevel()` 和 `db.setProfilingLevel(level)`:管理数据库的性能日志级别。 - `db.getReplicationInfo()` 和 `...

    30分钟学MongoDB系列 ——MongoDB的安全机制和高级管理篇

    此外,MongoDB的高级管理还包括查看数据库异常信息,这是通过特定命令来实现的,比如`db.currentOp()`可以查看当前数据库中所有的操作和状态,帮助数据库管理员及时发现并解决问题。 在数据库性能优化方面,MongoDB...

    MongoDB Training

    - **性能监控:** `db.currentOp()`显示当前数据库的操作情况;`db.killOp()`终止当前数据库的操作;`db.getReplicationInfo()`获取复制信息。 - **其他命令:** `db.repairDatabase()`修复数据库;`db.version()`查看...

    数据库-mongodb3.0.3集群分片搭建.rar

    1. **监控性能**:使用`db.currentOp()`查看当前操作,`top`命令监控资源使用。 2. **数据迁移**:当数据分布不均时,通过`shBalancerStart`和`shBalancerStop`命令手动或自动调整。 3. **备份与恢复**:定期使用`...

Global site tag (gtag.js) - Google Analytics