[关闭]
@zero1036 2017-03-30T16:04:45.000000Z 字数 6588 阅读 3357

【转】mongodb服务状态查询-db.serverStatus()

Mongodb


基本信息

  1. spock:PRIMARY>db.serverStatus()
  2. {
  3. "host" :"h6.corp.yongche.org", //主机名
  4. "version" :"2.6.2", //mongodb版本
  5. "process" :"mongod", //mongodb进程,主要有mongod和mongos(分片集群中)两种
  6. "pid" : NumberLong(4205), //mongod的pid进程号,可用shell的pidof mongod命令验证
  7. "uptime" : 173120, //mongod服务启动后到现在已经存活的秒数
  8. "uptimeMillis" :NumberLong(173119573), / /mongod服务启动后到现在已经存活的毫秒数
  9. "uptimeEstimate" : 172173, //mongod内部计算出来的存活秒数
  10. "localTime" :ISODate("2014-12-31T06:41:01.029Z") //本地时间
  11. }

锁信息

Mongodb有4种锁:r,R,w,W
R:表示全局读锁
W:全局写锁
r:某个数据库读锁
w:某个数据库写锁

  1. spock:PRIMARY>db.serverStatus().locks
  2. {
  3. "." : {
  4. "timeLockedMicros": {
  5. "R" :NumberLong(2532219), //mongod启动后所有库持有全局读锁的总微秒数
  6. "W" :NumberLong(2022505) // mongod启动后所有库持有全局写锁的总微秒数
  7. },
  8. "timeAcquiringMicros": {
  9. "R" :NumberLong(1489378), // mongod启动后所有库全局读锁的锁等待的总微秒数
  10. "W" :NumberLong(361350) // mongod启动后所有库全局写锁的锁等待的总微秒数
  11. }
  12. },
  13. "admin" : {
  14. "timeLockedMicros": {
  15. "r" :NumberLong(277350), // mongod启动后admin数据库持有的读锁时间
  16. "w" :NumberLong(0) // mongod启动后admin数据库持有的写锁时间
  17. },
  18. "timeAcquiringMicros": {
  19. "r" :NumberLong(11011), // mongod启动后admin数据库的读锁的锁等待总时间
  20. "w" :NumberLong(0) // mongod启动后admin数据库的读锁的锁等待总时间
  21. }
  22. },
  23. "local" : {
  24. "timeLockedMicros": {
  25. "r" :NumberLong(29750564),
  26. "w" :NumberLong(737)
  27. },
  28. "timeAcquiringMicros": {
  29. "r" :NumberLong(4074456),
  30. "w" :NumberLong(46)
  31. }
  32. },
  33. "jiangjianjian" : {
  34. "timeLockedMicros": {
  35. "r" :NumberLong(935802), //mongod启动后jiangjianjian数据库持有的读锁时间
  36. "w" :NumberLong(98) // mongod启动后jiangjianjian数据库持有的写锁时间
  37. },
  38. "timeAcquiringMicros": {
  39. "r" :NumberLong(262185), // mongod启动后jiangjianjian数据库的读锁的锁等待总时间
  40. "w" : NumberLong(9) // mongod启动后jiangjianjian数据库的写锁的锁等待总时间
  41. }
  42. },
  43. "test" : {
  44. "timeLockedMicros": {
  45. "r" :NumberLong(719696),
  46. "w" :NumberLong(141)
  47. },
  48. "timeAcquiringMicros": {
  49. "r" :NumberLong(332797),
  50. "w" :NumberLong(10)
  51. }
  52. }
  53. }

全局锁信息

  1. spock:PRIMARY>db.serverStatus().globalLock
  2. {
  3. "totalTime" :NumberLong("172059990000"), //mongod启动后到现在的总时间,单位微秒
  4. "lockTime" :NumberLong(2031058), //mongod启动后全局锁锁住的总时间,单位微秒
  5. "currentQueue" : {
  6. "total" : 0, //当前的全局锁等待锁等待的个数
  7. "readers" : 0, //当前的全局读锁等待个数
  8. "writers" : 0 //当前全局写锁等待个数
  9. },
  10. "activeClients" : {
  11. "total" : 0, //当前活跃客户端的个数
  12. "readers" : 0, //当前活跃客户端中进行读操作的个数
  13. "writers" : 0 //当前活跃客户端中进行写操作的个数
  14. }
  15. }

内存信息

  1. bj1-farm1:PRIMARY>db.serverStatus().mem
  2. {
  3. "bits" : 64, //操作系统位数
  4. "resident" : 45792, //物理内存消耗,单位M
  5. "virtual" : 326338, //虚拟内存消耗
  6. "supported" : true, //为true表示支持显示额外的内存信息
  7. "mapped" : 161399, //映射内存
  8. "mappedWithJournal" : 322798 //除了映射内存外还包括journal日志消耗的映射内存
  9. }

关于mongodb内存的介绍可参考我的blog
http://blog.csdn.net/cug_jiang126com/article/details/42264895

连接数信息

  1. bj1-farm1:PRIMARY>db.serverStatus().connections
  2. {
  3. "current" : 2581, //当前连接数
  4. "available" : 48619, //可用连接数
  5. "totalCreated" :NumberLong(187993238) //截止目前为止总共创建的连接数
  6. }

可看到当前mongod的最大连接数即为51200=2581+48619

额外信息

  1. bj1-farm1:PRIMARY>db.serverStatus().extra_info
  2. {
  3. "note" : "fields vary byplatform", //表示当前这个extra_info的显示信息依赖于底层系统
  4. "heap_usage_bytes" :206033064, //堆内存空间占用的字节数,仅linux适用
  5. "page_faults" : 11718117 //数据库访问数据时发现数据不在内存时的页面数量,当数据库性能很差或者数据量极大时,这个值会显著上升
  6. }

索引统计信息

  1. bj1-farm1:PRIMARY>db.serverStatus().indexCounters
  2. {
  3. "accesses" : 35369670951, //索引访问次数,值越大表示你的索引总体而言建得越好,如果值增长很慢,表示系统建的索引有问题
  4. "hits" : 35369213426, //索引命中次数,值越大表示mogond越好地利用了索引
  5. "misses" : 0, //表示mongod试图使用索引时发现其不在内存的次数,越小越好
  6. "resets" : 0, //计数器重置的次数
  7. "missRatio" : 0 //丢失率,即misses除以hits的值
  8. }

后台刷新信息

  1. bj1-farm1:PRIMARY>db.serverStatus().backgroundFlushing
  2. {
  3. "flushes" : 171675, //数据库刷新写操作到磁盘的总次数,会逐渐增长
  4. "total_ms" : 432943335, //mongod写数据到磁盘消耗的总时间,单位ms,
  5. "average_ms" :2521.8775884665793, //上述两值的比例,表示每次写磁盘的平均时间
  6. "last_ms" : 5329, //当前最后一次写磁盘花去的时间,ms,结合上个平均值可观察到mongd总体写性能和当前写性能
  7. "last_finished" :ISODate("2014-12-31T07:39:11.881Z") //最后一次写完成的时间
  8. }

游标信息

  1. bj1-farm1:PRIMARY>db.serverStatus().cursors
  2. {
  3. "note" : "deprecated,use server status metrics", //表示也可使用b.serverStatus().metrics.cursor命令看看
  4. "clientCursors_size" : 2, //mongodb当前为客户端维护的游标个数
  5. "totalOpen" : 2, //和clientCursors_size一样
  6. "pinned" : 0, //打开的pinned类型的游标个数
  7. "totalNoTimeout" : 0, //设置了经过一段不活跃时间以后不设置超时,即参数“ DBQuery.Option.noTimeout”值以后,打开的游标个数
  8. "timedOut" : 11 //从mongod启动以来的游标超时个数,如果这个值很大或者一直在增长,可能显示当前应用程序有错误
  9. }

网络信息

  1. bj1-farm1:PRIMARY>db.serverStatus().network
  2. {
  3. "bytesIn" :NumberLong("1391919214603"), //数据库接收到的网络传输字节数,可通过该值观察是否到了预计的期望值
  4. "bytesOut" :NumberLong("1669479449423"), //从数据库发送出去的网络传输字节数
  5. "numRequests" : 5186060375 //mongod接收到的总的请求次数
  6. }

副本集信息

  1. bj1-farm1:PRIMARY>db.serverStatus().repl
  2. {
  3. "setName" :"bj1-farm1", //副本集名称
  4. "setVersion" : 4, //当前版本,每修改一次配置会自增1
  5. "ismaster" : true, //当前节点是否为master
  6. "secondary" : false, //当前节点是否为slave
  7. "hosts" : [ //副本集组成
  8. "172.16.0.150:27017",
  9. "172.16.0.152:27017",
  10. "172.16.0.151:27017"
  11. ],
  12. "primary" : "172.16.0.150:27017", //master所在的ip地址
  13. "me" :"172.16.0.150:27017" //当前节点的ip地址
  14. }

关于更多的副本集管理和介绍详见我的blog
http://blog.csdn.net/cug_jiang126com/article/details/41943237

副本集的操作计数器

  1. bj1-farm1:PRIMARY>db.serverStatus().opcountersRepl
  2. {
  3. "insert" : 599, // mongod replication最近一次启动后的insert次数
  4. "query" : 0,
  5. "update" : 0,
  6. "delete" : 0,
  7. "getmore" : 0,
  8. "command" : 0
  9. }

操作计数器

  1. bj1-farm1:PRIMARY>db.serverStatus().opcounters
  2. {
  3. "insert" : 17476744, //mongod最近一次启动后的insert次数
  4. "query" : 4923585, // mongod最近一次启动后的query次数
  5. "update" : 445136, // mongod最近一次启动后的update次数
  6. "delete" : 301953, // mongod最近一次启动后的delete次数
  7. "getmore" : 28737548, // mongod最近一次启动后的getmore次数,这个值可能会很高,因为子节点会发送getmore命令,作为数据复制操作的一部分
  8. "command" : 32844821 //// mongod最近一次启动后的执行command命令的次数
  9. }

Asserts

  1. bj1-farm1:PRIMARY>db.serverStatus().asserts
  2. {
  3. "regular" : 65, //服务启动后正常的asserts错误个数,可通过log查看更多该信息
  4. "warning" : 1, //服务启动后的warning个数
  5. "msg" : 0, //服务启动后的message assert个数
  6. "user" : 30655213, //服务启动后的user asserts个数
  7. "rollovers" : 0 //服务启动后的重置次数
  8. }

writeBacksQueued

  1. bj1-farm1:PRIMARY>db.serverStatus().writeBacksQueued

false //如果为true表示有需要被重新执行的操作,如果为false表示没有

持久化(dur)

  1. bj1-farm1:PRIMARY>db.serverStatus().dur
  2. {
  3. "commits" : 29, //上次分组提交间隔之后,写入journal的commit的次数
  4. "journaledMB" : 1.089536, //上次分组提交间隔之后,写入journal的大小,单位M
  5. "writeToDataFilesMB" :2.035345, //上次分组提交间隔之后,从journal写入到数据文件的大小
  6. "compression" : 0.49237888647866956,//journal日志的压缩率
  7. "commitsInWriteLock" : 0, //提交的时候有写锁的次数,可以用该值判断当前系统的写压力
  8. "earlyCommits" : 0, //在分组提交间隔前,请求commit的次数。用这个值可以判断分组提交间隔,即 journal group commitinterval设置得是否合理
  9. "timeMs" : {
  10. "dt" : 3060, //收集数据所花的时间,单位ms
  11. "prepLogBuffer" :7, //准备写入journal所花的时间,单位ms,该值越小表示journal性能越好
  12. "writeToJournal" :36, //真正写入journal所花的时间,单位ms,该值和文件系统和硬件设备有关
  13. "writeToDataFiles": 34, //从journal写入到数据文件所花的时间,单位ms
  14. "remapPrivateView": 18 //重新映射内存所花的时间,单位ms,值越小表示journal性能越好
  15. }
  16. }

如果设置了分组提交间隔时间,该项还会在后面显示journalCommitIntervalMs信息,即提交间隔,默认100ms。

记录状态信息

  1. bj1-farm1:PRIMARY>db.serverStatus().recordStats
  2. {
  3. "accessesNotInMemory" :4444249, //访问数据时发现不在内存的总次数
  4. "pageFaultExceptionsThrown" :22198, //由于页面错误而抛出异常的总次数
  5. "yc_driver" : {
  6. "accessesNotInMemory": 53441,
  7. "pageFaultExceptionsThrown": 18067
  8. },
  9. "yc_foot_print" : {
  10. "accessesNotInMemory": 0,
  11. "pageFaultExceptionsThrown": 0
  12. }

工作集配置

  1. bj1-farm1:PRIMARY>db.serverStatus( { workingSet: 1 } ).workingSet
  2. {
  3. "note" :"thisIsAnEstimate", //注释
  4. "pagesInMemory" : 736105, //overseconds时间内在内存中的页的数量,默认页大小4k;如果你的数据集比内存还小,那么该值换算成大小就是数据集的大小;可以用该 值评估实际工作集的大小
  5. "computationTimeMicros" : 232590, //收集working set数据所花的时间,单位微秒,收集这些信息会影响服务器性能,请注意收集working set的频率
  6. "overSeconds" : 502 //内存中从最新数据变到最旧的数据页之间的所花的时间,单位秒。如果该值正在减少,或者值很小,表示working set已经远大于内存值;如 果该值很大,表示data set <=内存值
  7. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注