代码改变世界

mongostat命令的简单使用

  abce  阅读(691)  评论(0编辑  收藏  举报

有点类似linux平台的vmstat命令,只不过mongostat输出的是mongodb实例的相关信息。

在命令行下使用,会间隔固定时间(默认1s)获取mongodb的当前运行状态,并输出结果。

例如:每秒打印一次,共打印20次​

1
2
3
4
5
# 连接到复制集
$ mongostat --host=20.20.20.64:27017,20.20.20.65:27017,20.20.20.66:27017 --username=admin --humanReadable=true  --authenticationDatabase=admin -n 20 1 
     
# 连接到本地实例
$ mongostat --host=127.0.0.1 --port=27017 --username=admin --humanReadable=true --authenticationDatabase=admin -n 20 1

结果示例:​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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     6|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  1.65k   62.7k  103 myabc_mongo_rs  SLV Apr 10 10:27:24.560
    *0    *0     *0     *0       0     5|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  1.14k   62.1k  103 myabc_mongo_rs  SLV Apr 10 10:27:25.563
    *0     4     *0     *0       0    35|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  10.2k    373k  103 myabc_mongo_rs  SLV Apr 10 10:27:26.560
    *0    *0     *0     *0       0     8|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  1.37k   64.1k  103 myabc_mongo_rs  SLV Apr 10 10:27:27.560
    *0    *0     *0     *0       3    10|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  6.37k   66.3k  103 myabc_mongo_rs  SLV Apr 10 10:27:28.559
    *0    *0     *0     *0       0     7|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  1.27k   62.5k  103 myabc_mongo_rs  SLV Apr 10 10:27:29.559
    *0    *0     *0     *0       0     9|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  1.84k   63.4k  103 myabc_mongo_rs  SLV Apr 10 10:27:30.558
    *0    *0     *0     *0       0     4|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0   946b   61.2k  103 myabc_mongo_rs  SLV Apr 10 10:27:31.562
    *0    *0     *0     *0       0     4|0  0.1% 79.6%       0 11.3G 8.86G 0|0 0|0  1.18k   60.9k  103 myabc_mongo_rs  SLV Apr 10 10:27:32.554
    *0    *0     *0     *0       5    10|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  10.0k   68.2k  103 myabc_mongo_rs  SLV Apr 10 10:27:33.556
    *0    *0     *0     *0       0     6|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.67k   62.7k  103 myabc_mongo_rs  SLV Apr 10 10:27:34.560
    *0    *0     *0     *0       0     6|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.15k   62.3k  103 myabc_mongo_rs  SLV Apr 10 10:27:35.559
    *0    *0     *0     *0       0     8|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.99k   64.6k  103 myabc_mongo_rs  SLV Apr 10 10:27:36.560
    *0    *0     *0     *0       0     8|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.39k   64.1k  103 myabc_mongo_rs  SLV Apr 10 10:27:37.560
    *0    *0     *0     *0       3    10|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  6.41k   66.7k  103 myabc_mongo_rs  SLV Apr 10 10:27:38.554
    *0    *0     *0     *0       0     6|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.23k   62.0k  103 myabc_mongo_rs  SLV Apr 10 10:27:39.561
    *0    *0     *0     *0       0     9|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.83k   63.4k  103 myabc_mongo_rs  SLV Apr 10 10:27:40.561
    *0     4     *0     *0       0    31|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  9.10k    369k  103 myabc_mongo_rs  SLV Apr 10 10:27:41.559
    *0    *0     *0     *0       0     3|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  1.17k   60.3k  103 myabc_mongo_rs  SLV Apr 10 10:27:42.560
    *0    *0     *0     *0       5    10|0  0.1% 79.6%       0 11.3G 8.85G 0|0 0|0  10.1k   68.3k  103 myabc_mongo_rs  SLV Apr 10 10:27:43.561

解释:​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
·insert:每秒插入数据库的对象数。如果后面跟着星号(例如*),则该数据指的是一个复制的操作。 
·query:每秒执行的查询操作
·update:每秒执行的更新操作
·delete:每秒执行的删除操作
·getmore:每秒执行的更多(比如:游标批处理)操作
·command:每秒发生的command次数。如果是辅助节点,mongostat会呈现两个值,用竖线分割(例如3|0),分表代表本地|复制命令。一秒内执行的命令数比如批量插入,只认为是一条命令(所以意义应该不大)
·flushes:For WiredTiger引擎:刷新是指每次轮询间隔之间触发的WiredTiger检查点的数量;For MMAPv1引擎:每秒执行fsync将数据写入硬盘的次数。注:一般都是0,间断性会是1,通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。flush开销是很大的,如果频繁的flush,可能就要找找原因了
·dirty:只对WT引擎有效。WT引擎中的脏数据比例。它有两个临界值,5%和20%。这些脏数据需要落在磁盘上,如果占比不超过5%,那么MongoDB会每分钟刷盘,如果超过5%,MongoDB会启动主动刷盘,尽量让这个数字不超过5%,如果写入太快,导致dirty的值超过20%,MongoDB就会阻塞新请求,全力以赴的刷盘。
·used:只对WT引擎有效。代表系统分配给MongoDB的内存中,已经被占用的内存比例,MongoDB默认情况下,最大会占用系统内存的60%,例如我们在100G内存中,MongoDB默认最大可以占用60G内存,而当used值为50%的时候,代表此时分配给MongoDB的内存已经被占用了30G。它也有2个临界值80%和95%,在低于80%的时候,MongoDB会认为当前分配的内存还没有被完全使用,不会做太多干预;如果高于80%了,MongoDB会认为内存冗余量不足,就会触发内存数据清理动作,清理策略是依据LRU算法的,旧数据会被踢出内存;一旦高于95%,那么代表MongoDB数据库承受着巨大的写入压力,就会阻塞其他操作,全力以赴淘汰内存中的数据。
·vsize :使用的虚拟内存的大小,单位是G
·res: 常驻内存的大小,单位是G
·qrw: 客户端等待读/写的队列。当MongoDB接收到太多的命令而数据库被锁住无法执行完成,它会将命令加入队列。这一栏显示读/写2个队列的长度,都为0的话表示mongo毫无压力。高并发时,一般队列值会升高。
·arw:客户端活跃的读/写的队列。注:如果这两个数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。看看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了
·netIn:mongodb实例每秒接收到网络流量,单位是bytes。包含mongostat自身的流量
·netOut:mongodb实例每秒发送的网络流量,单位是bytes。包含mongostat自身的流量
·conn:连接数open connectins(打开连接的总数,是qr,qw,ar,aw的总和)
·set:复制集的名称
·repl:复制的状态<br>·time:时间戳

 

需要重点关注的参数:

1
2
3
4
·dirty
·used
·qr
·qw

mongostat可以使用参数-o=<field list>

指定输出的列。指定后mongostat只会输出指定的列。列之间使用逗号分割。

此外,-o还支持以下的方法,将serverStatus的结果进行修改:

.rate():显示mongostat两次调用之间每秒的比率

.diff()显示mongostat两次调用之间每秒的差值​

1
2
mongostat --port 27500 -o='host,opcounters.insert.rate()=Insert Rate,opcounters.query.rate()=Query Rate,opcounters.command.rate()=Command Rate,wiredTiger.cache.pages requested from the cache=Pages Req,metrics.document.inserted=inserted rate'
mongostat -o='host,mem.bits,metrics.document.inserted.diff()=inserted diff,metrics.document.inserted=inserted' --rowcount=5

结果示例:​​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ mongostat --host=127.0.0.1 --port=27017 --username=admin  --humanReadable=true --authenticationDatabase=admin -n 20 1 -o='host,opcounters.insert.rate()=Insert Rate,opcounters.query.rate()=Query Rate,opcounters.command.rate()=Command Rate,wiredTiger.cache.pages requested from the cache=Pages Req,metrics.document.inserted=inserted rate'
Enter password for mongo user:
 
           host Insert Rate Query Rate Command Rate   Pages Req inserted rate
127.0.0.1:27017           0          0            3 10809493343             1
127.0.0.1:27017           0          0           16 10809493410             1
127.0.0.1:27017           0          0            2 10809493414             1
127.0.0.1:27017           0          0            9 10809493658             1
127.0.0.1:27017           0          0            1 10809493662             1
127.0.0.1:27017           0          0            5 10809493666             1
127.0.0.1:27017           0          0            6 10809493697             1
127.0.0.1:27017           0          0            8 10809493701             1
127.0.0.1:27017           0          0            9 10809493705             1
127.0.0.1:27017           0          3           36 10809494060             1
           host Insert Rate Query Rate Command Rate   Pages Req inserted rate
127.0.0.1:27017           0          0            6 10809494064             1
127.0.0.1:27017           0          0           16 10809494131             1
127.0.0.1:27017           0          0            1 10809494135             1
127.0.0.1:27017           0          0            9 10809494139             1
127.0.0.1:27017           0          0            1 10809494143             1
127.0.0.1:27017           0          0            5 10809494147             1
127.0.0.1:27017           0          0            7 10809494178             1
127.0.0.1:27017           0          0            7 10809494182             1
127.0.0.1:27017           0          0            8 10809494186             1
127.0.0.1:27017           0          0           13 10809494190             1

mongostat可以使用参数-O=<field list>

除了显示mongostat默认显示的列,还会显示在-O=<field list>中指定的serverStatus的的结果信息。

结果示例:​​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ mongostat --host=127.0.0.1 --port=27017 --username=admin  --humanReadable=true --authenticationDatabase=admin -n 20 1 -O='host,version,network.numRequests=network requests'
Enter password for mongo user:
 
insert query update delete getmore command dirty  used flushes vsize   res qrw arw net_in net_out conn            set repl                time            host version network requests
    *0    *0     *0     *0       0     2|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0   560b   59.5k  103 myabc_mongo_rs  SLV Apr 10 11:13:25.792 127.0.0.1:27017  5.0.13        140029101
    *0     3     *0     *0       0    31|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  9.84k    368k  103 myabc_mongo_rs  SLV Apr 10 11:13:26.794 127.0.0.1:27017  5.0.13        140029137
    *0    *0     *0     *0       0     4|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0   590b   60.3k  103 myabc_mongo_rs  SLV Apr 10 11:13:27.789 127.0.0.1:27017  5.0.13        140029141
    *0    *0     *0     *0       2    13|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  6.90k   68.7k  103 myabc_mongo_rs  SLV Apr 10 11:13:28.790 127.0.0.1:27017  5.0.13        140029158
    *0    *0     *0     *0       0     7|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  1.23k   63.4k  103 myabc_mongo_rs  SLV Apr 10 11:13:29.791 127.0.0.1:27017  5.0.13        140029166
    *0    *0     *0     *0       0    12|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  2.44k   66.5k  103 myabc_mongo_rs  SLV Apr 10 11:13:30.789 127.0.0.1:27017  5.0.13        140029178
    *0    *0     *0     *0       0     1|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0   489b   59.0k  103 myabc_mongo_rs  SLV Apr 10 11:13:31.790 127.0.0.1:27017  5.0.13        140029180
    *0    *0     *0     *0       0     8|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  2.09k   64.5k  103 myabc_mongo_rs  SLV Apr 10 11:13:32.791 127.0.0.1:27017  5.0.13        140029189
    *0    *0     *0     *0       6     8|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  9.51k   66.0k  103 myabc_mongo_rs  SLV Apr 10 11:13:33.790 127.0.0.1:27017  5.0.13        140029203
    *0    *0     *0     *0       0    10|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  2.30k   66.1k  103 myabc_mongo_rs  SLV Apr 10 11:13:34.790 127.0.0.1:27017  5.0.13        140029214
insert query update delete getmore command dirty  used flushes vsize   res qrw arw net_in net_out conn            set repl                time            host version network requests
    *0    *0     *0     *0       0     2|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0   550b   59.8k  103 myabc_mongo_rs  SLV Apr 10 11:13:35.792 127.0.0.1:27017  5.0.13        140029217
    *0    *0     *0     *0       0     6|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  1.73k   62.1k  103 myabc_mongo_rs  SLV Apr 10 11:13:36.789 127.0.0.1:27017  5.0.13        140029223
    *0    *0     *0     *0       0     3|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0   600b   60.0k  103 myabc_mongo_rs  SLV Apr 10 11:13:37.790 127.0.0.1:27017  5.0.13        140029227
    *0    *0     *0     *0       2    12|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  6.66k   67.8k  103 myabc_mongo_rs  SLV Apr 10 11:13:38.791 127.0.0.1:27017  5.0.13        140029243
    *0    *0     *0     *0       0     9|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  1.45k   64.4k  103 myabc_mongo_rs  SLV Apr 10 11:13:39.790 127.0.0.1:27017  5.0.13        140029252
    *0    *0     *0     *0       0    12|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  2.48k   66.6k  103 myabc_mongo_rs  SLV Apr 10 11:13:40.787 127.0.0.1:27017  5.0.13        140029264
    *0     3     *0     *0       0    27|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  8.58k    364k  103 myabc_mongo_rs  SLV Apr 10 11:13:41.792 127.0.0.1:27017  5.0.13        140029296
    *0    *0     *0     *0       0     9|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  2.06k   64.7k  103 myabc_mongo_rs  SLV Apr 10 11:13:42.790 127.0.0.1:27017  5.0.13        140029305
    *0    *0     *0     *0       6     8|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  9.50k   66.0k  103 myabc_mongo_rs  SLV Apr 10 11:13:43.790 127.0.0.1:27017  5.0.13        140029319
    *0    *0     *0     *0       0    10|0  0.0% 79.5%       0 11.3G 8.90G 0|0 0|0  2.29k   66.1k  103 myabc_mongo_rs  SLV Apr 10 11:13:44.791 127.0.0.1:27017  5.0.13        140029330

 

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
历史上的今天:
2022-08-01 【MongoDB】MongoDB备份脚本
2022-08-01 【oracle】锁相关脚本
2022-08-01 【Oracle】RAC在启动时ohasd超时导致启动失败
2022-08-01 【MySQL】获取MySQL内存使用情况的脚本
2022-08-01 【MySQL】mysqldump使用指南
2017-08-01 二进制安装mysql 5.6
2016-08-01 Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh
点击右上角即可分享
微信分享提示