1 找出慢的操作
db.currentOp()
fubenji:PRIMARY> db.currentOp()---
opid---操作的唯一标识符,可通过它来终止一个操作。
active---是否正在运行,如果为false,表示此操作已经交出或正在等待其它操作交出锁
secs_running---该操作已经执行的时间,可通过它来判断是哪些查询耗时过长,占用了更多的数据库资源
op---操作类型,注意,数据库命令也可以当做查询来处理!
desc---日志中与此连接相关的每一条记录都以这个为前缀,以此来筛选日志信息!
locks---描述锁的类型,^表示全局锁。
waitingForLock---表示该操作是否因正在等待其它操作交出锁而处于阻塞状态
numYields---该操作交出锁而使得其它操作可以运行的次数,通常
进行文档搜索的操作比如查询,更新和删除可交出锁,只有在必要时才交出锁。
lockstats.timeAcquiringMicros-表示该操作需要多长时间才可以获得所需要的锁。
----------------------
在执行currentOp时,可以添加过滤条件,格式如下:
db.currentOp({"ns":"prod.users"})
2 终止某个操作
db.killOp(opid)
一般来说,只有交出了锁的进程才能被终止,因此更新,查找,删除可以被终止,
正在占用锁,或正在等待其它操作交出锁的操作则通常无法被终止!
3 系统分析器
默认下,处于关闭状态,不进行任何记录。
开启:db.setProfilingLevel(2)
2---表示分析器会记录所有内容在当前数据库的system.profile 固定集合中。
1---长耗时操作,默认为大于100ms的操作。
也可以自定时长db.setProfilingLevel(1,500).
关闭分析器---db.setProfilingLevel(0)
db.getProfilingLevel()
4 查询文档大小
Object.bsonSize(查询条件)
不包括padding 和索引大小
5 一个集合的统计信息
db.collection.stats()
fubenji:PRIMARY> db.doc.stats()
{
"ns" : "nutch.doc",
"count" : 1,
"size" : 1008,
"avgObjSize" : 1008,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 3,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 24528,
"indexSizes" : {
"_id_" : 8176,
"n_1" : 8176,
"who?_1" : 8176
},
"ok" : 1
}
6数据库的统计信息
db.stats()
fubenji:PRIMARY> db.stats(1024)
{
"db" : "nutch",
"collections" : 6,
"objects" : 23,
"avgObjSize" : 114.78260869565217,
"dataSize" : 2,
"storageSize" : 48,
"numExtents" : 6,
"indexes" : 8,
"indexSize" : 63,
"fileSize" : 65536,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 2,
"totalSize" : 544
},
"ok" : 1
}
7自带小甜心
mongotop
/usr/local/mongodb-linux-x86_64-2.6.1# ./bin/mongotop --port 27018
connected to: 127.0.0.1:27018
ns total read write 2014-08-04T17:56:38
admin.system.indexes 0ms 0ms 0ms
admin.system.roles 0ms 0ms 0ms
admin.system.users 0ms 0ms 0ms
admin.system.version 0ms 0ms 0ms
local.me 0ms 0ms 0ms
local.oplog.rs 0ms 0ms 0ms
local.replset.minvalid 0ms 0ms 0ms
/usr/local/mongodb-linux-x86_64-2.6.1# ./bin/mongotop --port 27018 -locks
connected to: 127.0.0.1:27018
db total read write 2014-08-04T17:57:16
zapya_api 0ms 0ms 0ms
test 0ms 0ms 0ms
nutch 0ms 0ms 0ms
local 0ms 0ms 0ms
admin 0ms 0ms 0ms
. 0ms 0ms 0ms
/usr/local/mongodb-linux-x86_64-2.6.1# ./bin/mongostat --port 27018
connected to: 127.0.0.1:27018
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn set repl time
*0 *0 *0 *0 0 2|0 0 2.31g 5.14g 83m 0 zapya_api:0.0% 0 0|0 0|0 207b 3k 4 fubenji PRI 01:58:23
*0 *0 *0 *0 0 1|0 0 2.31g 5.14g 83m 0 nutch:0.0% 0 0|0 0|0 62b 3k 4 fubenji PRI 01:58:24
*0 *0 *0 *0 1 2|0 0 2.31g 5.14g 83m 0 .:0.1% 0 0|0 0|0 254b 3k 4 fubenji PRI 01:58:25
*0 *0 *0 *0 0 1|0 0 2.31g 5.14g 83m 0 .:0.0% 0 0|0 0|0 62b 3k 4 fubenji PRI 01:58:26
*0 *0 *0 *0 0 2|0 0 2.31g 5.14g 83m 0 zapya_api:0.0% 0 0|0 0|0 207b 3k 4 fubenji PRI 01:58:27
*0 *0 *0 *0 0 1|0 0 2.31g 5.14g 83m 0 zapya_api:0.0% 0 0|0 0|0 62b 3k 4 fubenji PRI 01:58:28
*0 *0 *0 *0 0 2|0 0 2.31g 5.14g 83m 0 zapya_api:0.0% 0 0|0 0|0 207b 3k 4 fubenji PRI 01:58:29
*0 *0 *0 *0 1 1|0 0 2.31g 5.14g 83m 0 zapya_api:0.0% 0 0|0 0|0 109b 3k 4 fubenji PRI 01:58:30
*0 *0 *0 *0 0 2|0 0 2.31g 5.14g 83m 0 local:0.0% 0 0|0 0|0 207b 3k 4 fubenji PRI 01:58:31
insert query update delete getmore command ---每种对应操作的发生次数
flushes ---mongod将数据刷新到磁盘的次数
mapped ---mongod所映射的内存数量,通常约等于数据目录的大小
vsize ---mongod正在使用的虚拟内存大小,通常为数据目录的2倍大小,一次用于映射的文件,一次用于日记系统
res---mongod使用的内存大小,通常应该尽量接近机器的所有内存大小。
locked db ---在上一个时间片中,锁定时间最长的数据库,该百分比是根据数据库被锁定的时间
和全局锁的锁定时间来计算的,意味着该值可能超过100%
idx miss % ---有多少索引在访问中发生了缺页中断,也即是索引入口或者被搜索的索引内容不在内存中,需要磁盘IO.
qr|qw ---读写队列的大小,有多少读写被阻塞等待处理
ar|aw ---活动客户端的数量,也就是正在进行读写操作的客户端。
netIn ---网络进来的字节数。
netOut ---通过网络传出去的字节数
conn ---服务器打开的连接数。
time ---以上统计信息所用的时间
8 查看oplog大小
db.printReplicationInfo()