• 左膀mongostat,右臂mongotop——MongoDB的监控之道


      通常在排查MongoDB的性能时,我们首先想到的是MongoDB自身内置的两个监测命令工具:mongostat和mongotop,通过这两个命令的输出可以了解到当前MongoDB实例的读写情况,现介绍它们的使用,环境为linux环境。

      1、mongostat命令

       在运行mongod实例的linux机器上运行如下命令:

    mongostat --host ip:port -u "用户名" -p "密码" --authenticationDatabase "admin"

      (1)参数说明

    • ip:MongoDB集群中的路由服务器IP地址或者是某个副本集中主从库的IP地址
    • port:路由服务器IP对应的端口号,或者副本集中主从库IP对应的端口号
    • 用户名和密码:与上述ip、port所在的机器保持一致,都是相应管理员的账号和密码,若服务器上没有添加权限认证的话,可以不用设置这些参数
    • authenticationDatabase:必须是admin库

      (2)效果图

      在上图中,mongostat命令默认是每隔一秒输出一行数据。

      (3)mongostat输出字段说明

    字段名称 解释描述
    insert 每秒插入次数
    query 每秒查询次数
    update 每秒更新次数
    delete 每秒删除次数
    getmore 每秒执行getmore次数
    command 每秒的命令数,除了插入、查找、更新、删除命令统计外,还统计了别的命令
    flushes

    对于WiredTiger引擎来说,是指checkpoint的触发次数在一个轮询间隔期间

    对于MMAPv1 引擎来说,是指每秒执行fsync将数据写入硬盘的次数

    一般flushes都是0,间断性会是1, 通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。

    flush开销是很大的,如果频繁的flush,就需要排查一下原因了

    mapped 所有的被mmap的数据量
    vsize 虚拟内存使用量(在mongostat最后一次调用的总数据)
    res

    物理内存使用量(在mongostat最后一次调用的总数据)

    vsize一般不会有大的变动, res会慢慢的上升,如果res经常突然下降,就需要排查一下是否存在其他的程序正在消费内存

    faults 每秒访问失败数,与内存swap有关
    qrw 客户端读写等待队列数量,高并发时,一般队列值会升高
    arw 客户端读写活跃个数
    net_in 网络带宽压力,MongoDB实例的网络进流量
    net_out 网络带宽压力,MongoDB实例的网络出流量
    conn 打开连接的总数,是qr,qw,ar,aw的总和
    MongoDB为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数maxIncomingConnections
    time 时间戳

      (4)官方介绍

      点击进入mongostat官方介绍

      2、mongotop命令

      在运行mongod实例的linux机器上运行如下命令:

    mongotop --host ip:port -u "用户名" -p "密码"  --authenticationDatabase "admin"  60

      (1)参数说明

    • ip:必须是分片集群中主从库的IP地址
    • port:必须是分片集群中主从库的端口号
    • 用户名和密码:分片集群中副本集管理员权限的账号,若没有添加任何用户的话,那么可以不用设置用户名和密码
    • authenticationDatabase:必须是admin库
    • 60:表示每隔一分钟就输出一组数据,若不设置这个参数的话,那么默认是每隔一秒就输出一组数据

      (2)效果图

       在上图中,我们看到两组数据相差一秒钟。

      (3)mongotop输出字段说明

    字段名出 解释说明
    ns 全称namespace,由库名+点号+集合名组成
    total

    指定周期内每次统计mongod实例的读写总耗时时长

    (在上图中指定的周期是60秒,默认是1秒)

    read

    指定周期内每次统计的读操作耗时时长

    (在上图中指定的周期是60秒,默认是1秒)

    write

    指定周期内每次统计的写操作耗时时长

    (在上图中指定的周期是60秒,默认是1秒)

      (4)官方介绍

      点击进入mongotop官方介绍

  • 相关阅读:
    AngularJS Directive 隔离 Scope 数据交互
    Web(Jsp+ Servlet)开发中如何解决中文乱码问题
    MySQL中进行模糊搜索的一些问题
    RequireJS 模块的定义与加载
    Mysql 正则表达式 判断字段值不包含数字
    使用命令行将Excel数据表导入Mysql中的方法小结
    js 去除字符串左右两端的空格
    js 计算两个时间差
    在MySQL中创建实现自增的序列(Sequence)的教程
    ajax post传值
  • 原文地址:https://www.cnblogs.com/bien94/p/13047292.html
Copyright © 2020-2023  润新知