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

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,//数据库连接id

"waitingForLock" : false,//是否在等待获取锁,

"numYields" : 0,

"lockStats" : {

"timeLockedMicros" : {//此操作获得以下锁后,把持的微秒时间

"R" : NumberLong(0),//整个mongodb服务实例的全局读锁

"W" : NumberLong(0),//整个mongodb服务实例的全局写锁

"r" : NumberLong(170),//整个数据库实例的读锁

"w" : NumberLong(0)//整个数据库实例的写锁

},

"timeAcquiringMicros" : {//此操作为了获得以下的锁,而耗费等待的微秒时间

"R" : NumberLong(),//整个mongodb服务实例的全局读锁

"W" : NumberLong(),//整个mongodb服务实例的全局写锁

"r" : NumberLong(5),//整个数据库实例的读锁

"w" : NumberLong(0),//整个数据库实例的写锁

}

}

}

时间单位换算:

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

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

其实,我们可以写脚本对inprog数组进行筛选来得到自己想要的数据,比如:

1:--获取已停止活动+操作为查询的数据

db.currentOp(true).inprog.forEach(

function(opDoc){//opDoc其实是返回的每个op操作对象

if(!opDoc.active && opDoc.op==‘query‘)

printjson(d)//打印信息

}

)

2:--正在进行中+操作为查询的数据

db.currentOp(true).inprog.forEach(

function(opDoc){//opDoc其实是返回的每个op操作对象

if(opDoc.active && opDoc.op==‘query‘)

printjson(d)//打印信息

}

)

通过以上监控如果发现某个操作比较慢,还可以对其进行kill,很简单,知道了具体的opid后,一句命令就可以搞定,so easy:

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

好了,先写这么多,有时间了继续写自己在mongodb方面的心得,记下来不为别的,只为刚入门的兄弟少走弯路....

http://www.myexception.cn/database/1260955.html

时间: 2024-11-07 12:56:41

mongodb系列之-治理mongodb->db.currentOp()的相关文章

MongoDB系列:把mongodb作为windows的服务来启动

1.首先切换到mongodb安装目录下的bin目录,在控制台直接运行以下命令 "C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" --logpath "D:\mongodb\logs\mongodb.log" --dbpath "D:\mongodb\data" --install --journal ps: 1.必须用管理员身份在命令后运行控制台 2.d盘下必须先创建好mongodb/dat

MongoDB副本集配置系列八:MongoDB监控

1:Mongostat MongoDB2.6版本 MongoDB3.0版本 2:db.setProfilingLevel(2):打开profiler 类似于MySQL的slow log Profiler默认是关闭的,你可以选择全部开启,或者有慢查询的时候开启. db.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all > use test switched to db test > db.setProfilingLevel(2)

MongoDB系列---用户及权限管理02

MongoDB-——Privilege 学习大纲: 1.用户权限管理 2.用户操作 知识回顾:  本系列上一篇博文我们讲述了如何搭建环境以及配置我们的MongoDB,通过搭建环境后我们又学习了如何通过简单的命令和配置来启动关闭我们的MongoDB. 一 用户及权限管理 前言: MongoDB 作为时下最为热门的数据库,那么其安全验证也是必不可少的,否则一个没有验证的数据库暴露出去,任何人可随意操作,这将是非常危险的.我们可以通过使用为MongoDB 创建用户的方式来降低风险 1 MongoDB用

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

MongoDB初探系列之一:MongoDB安装及建议配置

想必第一次听说MongoDB的各位小伙伴,一定是听到他的诸多很N的地方才决定来学习一下这个东东的.不管你是出于什么目的开始踏上这段学习之旅,但是同样作为菜鸟的我很乐意和各位一起成长.废话不多说了,各种简介在这里就不写了,只留下干货.想看简介的各位可以找度娘自行解决. 1.第一次接触新东西,当然要去官网官网转转. MongoDB官网:https://www.mongodb.org/ 下载内容如下图所示: 如果点击进入下载页面后,没有弹出来下载对话框,点击下图所示的内容即可.注意:不需要注册信息的.

MongoDB系列一:CentOS7.2下安装mongoDB3.2.8

最近在又在倒腾MongoDB,把安装配置的相关命令贴出来 1.下载 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.8.tgz 2.解压 tar zxvf mongodb-linux-x86_64-rhel70-3.2.8.tgz mv mongodb-linux-x86_64-rhel70-3.2.8 /usr/local/ mv mongodb-linux-x86_64-rhel70-3.2.8 mo

MongoDB 系列教程

系列目录 MongoDB学习笔记(一) MongoDB介绍及安装 MongoDB学习笔记(二) 通过samus驱动实现基本数据操作 MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据 MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系 MongoDB学习笔记(五) MongoDB文件存取操作 MongoDB学习笔记(六) MongoDB索引用法和效率分析

MongoDB随手记2——安装db

以下为学习笔记: 1. 去MongoDB download center下载适合电脑操作系统的安装文件: https://www.mongodb.com/download-center#enterprise 2. 找到.msi文件双击运行按照步骤进行安装即可. Set up the MongoDB environment. MongoDB requires a data directory to store all data. MongoDB's default data directory p

MongoDB系列(一):简介及安装

什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成. MongoDB 文档(BSON)类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. MongoDB的特点 1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易.