mongodb的运行状态查看及内存使用查看 mongodb
查看正在进行的操作
使用db.currentOp()命令,该函数会列出数据库正在进行的所有操作,其中一些字段:
命令详解:https://docs.mongodb.com/manual/reference/method/db.currentOp/index.html
1:opid:操作的唯一标识符
2:active:该操作是否正在运行
3:secs_running:该操作已经执行的时间
4:op:操作的类型
5:desc:日志中与此连接相关的每一条记录都会以[conn3]为前缀,因此可以此来筛选日志
6:locs:描述该操作使用的锁的类型,其中“^”表示全局锁
7:waitingForLock:表示该操作是否因正在等待锁而处于阻塞状态
8:numYields:表示该操作交出锁,而使其他操作得以运行的次数
9:lockstats.timeAcquiringMicros:表示该操作需要多长时间才能取得所需的锁
在执行db.currentOp的时候,还可以加入过滤条件,从而只显示符合条件的结果,比如:b.currentOp({“ns”:”mydb.users”});
只查询该命名空间的操作通常用这个命令来查找耗时的操作,但是,所有跟复制、分片等相关的操作,都应该忽略掉,即使慢也不要去动,更不要去终止他们。
终止操作的执行
可以用db.killOp(opid);,其中的opid可以通过上面的命令来查看。
系统分析器可记录特殊集合system.profile中的操作,并提供大量有关耗时过长的操作信息,系统的整体性能会有所下降,因此默认是关闭的。
Changed in version 3.4.
currentOp and the database profiler report the same basic diagnostic information for all CRUD operations
3.4版本后 此命令返回的数据与currentOP返回的数据一致
https://docs.mongodb.com/manual/reference/database-profiler/index.html
1:开启系统分析器:db.setProfilingLevel(级别,自定义耗时长);
https://docs.mongodb.com/manual/reference/method/db.setProfilingLevel/index.html
命令已经修改
设置为1级,默认会记录耗时大于100ms的操作,也可以自定义时长
设置为2级,分析器就会记录所有内容 ;
设置为0级,将会关闭系统分析器
2:通过查看system.profile集合的内容,在那个数据库上开启,就在那个数据库里面查看
获取服务器统计信息:db.serverStatus();
计算空间消耗
1:使用Object.bsonsize()来计算文档的大小,比如:
Object.bsonsize(db.users.findOne(可以加条件));
2:使用stats函数来显示一个集合的信息,比如:
db.users.stats(比例因子); 可以传入比例因子,如1024表示k,1024*1024表示M
3:使用stats函数显示数据库的信息,跟上面一个类似
mongotop和mongostat
MongoDB自带的命令行工具,通过每隔几秒输出当前状态,以监控数据库
如有疑问 请留言 欢迎提供建议
评论已有 0 条