查看Mongodb状态

1、mongotop

mongotop --host 192.168.1.101  -u "myroot" --authenticationDatabase "admin" -p'123456'

2020-08-03T22:49:55.014-0400    connected to: 192.168.1.101

                                   ns    total    read    write    2020-08-03T22:49:56-04:00
                       local.oplog.rs      3ms     3ms      0ms                             
                   admin.system.users      1ms     1ms      0ms                             
                           admin.comm      0ms     0ms      0ms                             
                   admin.system.roles      0ms     0ms      0ms                             
                 admin.system.version      0ms     0ms      0ms                             
                    articledb.comment      0ms     0ms      0ms                             
                  config.transactions      0ms     0ms      0ms                             
               local.replset.election      0ms     0ms      0ms                             
               local.replset.minvalid      0ms     0ms      0ms                             
local.replset.oplogTruncateAfterPoint      0ms     0ms      0ms                             

输出说明:

  • ns:包含数据库命名空间,后者结合了数据库名称和集合。
  • db:包含数据库的名称。名为 . 的数据库针对全局锁定,而非特定数据库。
  • total:mongod花费的时间工作在这个命名空间提供总额。
  • read:提供了大量的时间,这mongod花费在执行读操作,在此命名空间。
  • write:提供这个命名空间进行写操作,这mongod花了大量的时间。

2、mongostat

mongostat --host 192.168.1.101  -u "myroot" --authenticationDatabase "admin" -p'123456'

insert query update delete getmore command dirty used flushes vsize   res qrw arw net_in net_out conn       set repl                time
    *0    *0     *0     *0       0    17|0  0.0% 0.7%       0 1.30G 68.0M 0|0 1|0  2.74k   80.3k    4 hqmongodb  SEC Aug  3 22:50:10.803
    *0    *0     *0     *0       0    19|0  0.0% 0.7%       0 1.30G 68.0M 0|0 1|0  2.96k   78.7k    3 hqmongodb  SEC Aug  3 22:50:11.781
    *0    *0     *0     *0       0    17|0  0.0% 0.7%       0 1.30G 68.0M 0|0 1|0  2.71k   75.4k    3 hqmongodb  SEC Aug  3 22:50:12.797
    *0    *0     *0     *0       0    20|0  0.0% 0.7%       0 1.30G 68.0M 0|0 1|0  3.36k   79.5k    3 hqmongodb  SEC Aug  3 22:50:13.773
    *0    *0     *0     *0       0    17|0  0.0% 0.7%       0 1.30G 68.0M 0|0 1|0  2.68k   74.6k    3 hqmongodb  SEC Aug  3 22:50:14.801
    *0    *0     *0     *0       0    20|0  0.0% 0.7%       0 1.30G 68.0M 0|0 1|0  3.41k   80.6k    3 hqmongodb  SEC Aug  3 22:50:15.764
    *0    *0     *0     *0       0    17|0  0.0% 0.7%       0 1.30G 69.0M 0|0 1|0  2.71k   75.5k    3 hqmongodb  SEC Aug  3 22:50:16.778
    *0    *0     *0     *0       0    19|0  0.0% 0.7%       0 1.30G 69.0M 0|0 1|0  3.25k   76.8k    3 hqmongodb  SEC Aug  3 22:50:17.789
    *0    *0     *0     *0       0    18|0  0.0% 0.7%       0 1.30G 69.0M 0|0 1|0  2.77k   77.1k    3 hqmongodb  SEC Aug  3 22:50:18.784
    *0    *0     *0     *0       0    20|0  0.0% 0.7%       0 1.30G 69.0M 0|0 1|0  3.28k   77.6k    3 hqmongodb  SEC Aug  3 22:50:19.784

输出说明:

  • inserts/s 每秒插入次数
  • query/s 每秒查询次数
  • update/s 每秒更新次数
  • delete/s 每秒删除次数
  • getmore/s 每秒执行getmore次数
  • command/s 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令
  • flushs/s 每秒执行fsync将数据写入硬盘的次数。
  • mapped/s 所有的被mmap的数据量,单位是MB,
  • vsize 虚拟内存使用量,单位MB
  • res 物理内存使用量,单位MB
  • faults/s 每秒访问失败数(只有Linux有),数据被交换出物理内存,放到swap。不要超过100,否则就是机器内存太小,造成频繁swap写入。此时要升级内存或者扩展
  • locked % 被锁的时间百分比,尽量控制在50%以下吧
  • idx miss % 索引不命中所占百分比。如果太高的话就要考虑索引是不是少了
  • q t|r|w 当Mongodb接收到太多的命令而数据库被锁住无法执行完成,它会将命令加入队列。这一栏显示了总共、读、写3个队列的长度,都为0的话表示mongo毫无压力。高并发时,一般队列值会升高。
  • conn 当前连接数
  • time 时间戳

3、查看当前的option

Mongodb 的命令一般很快就完成,但是在一台繁忙的机器或者有比较慢的命令时,你可以通过db.currentOp()获取当前正在执行的操作,在没有负载的机器上,该命令基本上都是返回空的   

>db.currentOp()
{ "opid" : "shard3:466404288", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.usersEmails", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" },

如果发现一个操作太长,把数据库卡死的话,可以用以下命令杀死他:

>db.killOp("shard3:466404288")

4、打开profiler,类似于mysql的slow_log慢查询,默认是关闭的。

0:关闭,不收集任何数据。
1:收集慢查询数据,默认是100毫秒。
2:收集所有数据

首先切换到需要打开慢查询的库

>use  spark
>db.auth('test','test123')
>db.setProfilingLevel(2)
>db.getProfilingLevel()
可以自定义时间,单位是ms:
>db.setProfilingLevel(1,300)

查看:

>db.system.profile.find().sort({$natural:-1})
  • ts:时间戳
  • info:具体的操作
  • millis:操作所花时间,毫秒

查看profiler的数量:

>db.system.profile.count();

查看影响的行数:

>db.system.profile.explain()

5、查看副本集同步延迟

> db.printSlaveReplicationInfo()

6、3.4版本以后默认的数据库存储引擎是wiredTiger,查看当前占用的内存

> db.runCommand({ serverStatus: 1}).wiredTiger.cache["bytes currently in the cache"]
16179710118

设置cacheSize为10G,根据自己的服务器情况指定:

>db.adminCommand({setParameter: 1, wiredTigerEngineRuntimeConfig: "cache_size=10G"})
{ "was" : "", "ok" : 1 }

转载自:https://www.cnblogs.com/cuishuai/p/8034851.html

posted @ 2020-08-04 11:05  fat_girl_spring  阅读(538)  评论(0编辑  收藏  举报