暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

巨杉系列工具 | 集群分析工具sdbtop

巨杉数据库 2019-12-13
1209

近期,巨杉数据库正式推出了完整的 SequoiaDB 工具包,作为辅助工具,更好地帮助大家使用和运维管理分布式数据库。为此,巨杉技术社区将持续推出工具系列文章,帮助大家了解巨杉数据库丰富的工具矩阵。


SequoiaDB有几种方式收集系统信息诊断数据库的性能问题,最常见的方式是使用快照。快照用于获取数据库某个时间点的系统信息,但并不能反映多个时间点系统信息变化的数据。SequoiaDB自带的数据库的性能监控工具 sdbtop,在命令行模式下提供了一个图形化界面,可用来实时监控和查看集群中各个节点的监视信息。本文将从sdbtop使用方法、如何进行监控检测、使用案例方面详细介绍 sdbtop。



sdbtop 分析数据库性能


  • sdbtop 语法

在SequoiaDB安装目录bin中执行:./sdbtop –h显示参数信息。
    sdbtop -h
    Command options:
    -h [ --help ] help
    -v [ --version ] version
    -c [ --confpath ] arg configuration file path, default:
    conf/samples/sdbtop.xml
    -i [ --hostname ] arg host name, default: localhost
    -s [ --servicename ] arg service name, default: 11810
    -u [ --usrname ] arg username, default: ""
    -p [ --password ] arg password, default: ""
    --cipherfile arg cipherfile location, default ./passwd
    --cipher arg input password using a cipherfile
    --token arg password encryption token
    --ssl use SSL connection
    Note:
    如果提示“Your terminal can’t support color”,则执行 export TERM=linux 或 export TERM=xterm 后再执行 sdbtop 即可。

    参数说明

    执行下面的命令进入到 sdbtop 命令行模式下的图形化用户界面主窗口:
      ./sdbtop –i localhost –s 11810
      这条命令中,sdbtop 使用配置文件为安装目录中conf/sample/sdbtop.xml,监控主机为当前主机,端口服务名为11810,用户名和密码为空。

      • sdbtop组成部分

      进入到 sdbtop 主窗口后,主要有三部分组成,头部区域、中间区域、底部区域组成。

      区域1是头部区域主要包括版本信息(version)、刷新频率(refresh)、数据计算模式(displayMode)、快照模式(snapshotMode)、打印模式(snapshotMode)、快照获取模式(snapshotModeInput)、监控主机名(hostname)、监控端口服务名(servicename)、排序方式(sortingWay)、排序字段(sortingWay)、过滤行号(filtering Number)、登录用户名(usrName)。


      区域2是主窗口选择快捷键说明,即进入主窗口后键盘输入快捷键对应不同的功能。

      区域3是进入上一步后子窗口的按键说明,是一些通用的参数,能够根据用户需求显示出特定的信息。下面列举对应的快捷键和使用说明。

      例如进入主窗口后按‘d’键,列出数据库节点的数据库监视信息。
      按‘Tab’键,可以看到屏幕左上方的‘displayMode’的值会发生切换:绝对值(ABSOLUTE),平均值(AVERAGE),差值(DELTA)三个模式。
      按‘r’键,可以看到屏幕下方的‘please input the refresh interval(eg: 5) :’,键盘输入数字改变屏幕刷新频率。
      按‘h’键,获取帮助信息。

      • sdbtop监控内容

      sdbtop提供了对数据库节点会话、集合空间、系统资源使用情况、数据库的监控单元。通过这些信息,用户可以了解当前数据库的连接信息以及连接的活动情况,数据库集合空间的分布以及使用情况,数据库集群的资源使用情况,以及数据库集群的读写、更新、删除、复制、索引读写等性能情况。


      (1) 数据库会话监控(s)

      进入主窗口,按‘s’键,列出数据库节点的所有会话信息。

      子窗口如下:
      • 按‘Tab’键,可以看到屏幕左上方的‘displayMode’的值会发生切换

      • 按‘r’键,在屏幕最下方输入‘2’,回车,设置刷新间隔时间,可以看到屏幕左上方的‘refresh’的值变为 2

      • 按‘A’键,并输入‘TID’,列表结果按照 TID 进行顺序排序

      • 按‘N’键,并输入1,列表中将原来行号为1的记录过滤不显示

      • 按‘W’键,返回没有按行号进行过滤前的列表信息

      • 按‘C’键,并输入‘TID:39895”进行筛选,则只显示 TID 值为39895的记录

      • 按‘Q’键,返回没有按照筛选条件前的列表信息

      • 按‘<’或者‘>’键,可以查看隐藏在左边或者右边的列

      数据库节点的所有会话监控信息可以从数据库SDB_SNAP_SESSIONS快照中获取,在上述窗口中,各监控字段说明如下:


      (2) 数据库集合空间监控(c)

      进入主窗口,按‘c’键,列出数据库节点上的所有集合空间
      子窗口如下,显示集群中的集合空间信息。
      快捷键功能可参考数据库会话监控。
      数据库节点上的所有集合空间可以从数据库SDB_SNAP_COLLECTIONSPACES快照中获取,在上述窗口中,各监控字段说明如下:


      (3) 数据库系统资源监控(t)

      进入主窗口,键盘按‘t’键,列出数据库节点上的系统资源情况。
      系统资源使用情况如下所示:
      快捷键功能可参考数据库会话监控。数据库系统资源使用情况可以从数据库SDB_SNAP_SYSTEM快照中获取,在上述窗口中,各监控字段说明如下:


      (4) 数据库集群监控(d)

      进入主窗口,按‘d’键,列出数据库集群监控信息。
      子窗口集群信息如下:
      快捷键功能可参考数据库会话监控。数据库集群监控信息可以从数据库SDB_SNAP_DATABASE快照中获取,在上述窗口中,各监控字段说明如下:

      这里说明一下 DataRead 和 Read 的区别,一般情况下这两者是同样的值。但当集合中插入记录r1大小size1为100,集群会预留12%的空间;当更新记录r2大小size2为150,更新的大小大于(1+12%)*size1,即size2 > (1+12%)*size1这时会产生overflow。接着读记录r1,DataRead读两次数据文件,才能读完整条记录,Read是读取记录数量,因此在记录有 overflow 下 DataRead 会比 Read 多。

      • sdbtop配置文件定制

      sdbtop监控支持SDB_SNAP_CONTEXTS, SDB_SNAP_CONTEXTS_CURRENT、SDB_SNAP_SESSIONS、SDB_SNAP_SESSIONS_CURRENT、SDB_SNAP_COLLECTIONS、SDB_SNAP_COLLECTIONSPACES、SDB_SNAP_DATABASE、SDB_SNAP_SYSTEM、SDB_SNAP_CATALOG,可通过配置文件对监控信息进行配置。如上述监控中在显示数据库集群监控信息时可通过配置实现本地网络端口接受、发送流量,数据同步接受、发送流量,异常节点的监控。

      编辑SequoiaDB安装目录下 conf中samples/sdbtop.xml 文件,找到 labelName 为 Database 的监控节点,添加 NetIn、NetOut、ReplNetIn、ReplNetIn、ErrNodes 字段监控,配置方式如下:
        <FieldStruct>
        <deltaName>NetIn</deltaName>
        <absoluteName>NetIn</absoluteName>
        <averageName>NetIn</averageName>
        <sourceField>svcNetIn</sourceField>
        <contentLength>30</contentLength>
        <alignment>RIGHT</alignment>
        <canSwitch>1</canSwitch>
        <deltaColour>
        <foreGroundColor>6</foreGroundColor>
        <backGroundColor>0</backGroundColor>
        </deltaColour>
        <absoluteColour>
        <foreGroundColor>3</foreGroundColor>
        <backGroundColor>0</backGroundColor>
        </absoluteColour>
        <averageColour>
        <foreGroundColor>5</foreGroundColor>
        <backGroundColor>0</backGroundColor>
        </averageColour>
        </FieldStruct>

        配置后进入sdbtop即可查询新添加的这些参数信息。


        sdbtop诊断问题案例


        • 查询慢问题

        通过 Spark 客户端查询test.conmain这张一亿三千万记录的表,SQL语句如下所示,发现执行速度比较慢。
          select policyno from test.conmain
          where policyno in ( 'PEAD20193412DBM0000073','PEBS201934120000000344',
          'PEBS201934120000000174','PEBS201934120000000345', 'PEBS201934120000000198','PEBS201934120000000347',
          'PEBS201934120000000201','PEBS201934120000000351',

          查询结果用时12.942秒

          进入 sdbtop 主窗口,按‘d’键,列出数据库集群监控信息,按tab键调整输出模式,为 AVERAGE 时观察集群的写入,发现 DataRead 读非常大,但是IndexRead读为0。说明此SQL没有走索引,查询方式为全表扫描,针对此场景需要对查询的字段创建索引字段提高查询效率。
          创建表的索引:
            sdb 'db.test.conmain.createIndex("policyno_index",{"policyno":1})'
            创建索引后再次查询效率大幅度提升,仅仅只用了0.148秒就返回结果。通过创建索引能够让亿级别的表毫秒级返回结果。


            • 导入数据异常问题

            给集群中某一张表导入数据发现比较慢,且出现.rec文件(导入错误信息)。打开sdbtop工具的数据库集群监控页面发现ReplInsert(同步数据)的值和Insert(插入数据)的值长时间不一致,此时数据同步速率和数据插入的速率不一致,说明集群数据同步出现异常,某个节点出现了故障导致。
            打开协调节点日志查看发现大量的-79(无法连接到指定地址)错误信息,表示p_sdb_1的11820节点出现了异常。
            在集群环境下通过协调节点获取数据库快照,可以通过监测ErrNodes判断出是否存在节点不可用的情况。
              #切换到SequoiaDB安装目录下
              >cd opt/SequoiaDB/bin/
              #连接集群,未设置的情况下username和password默认都为sdbadmin
              $ sdb 'db = new Sdb("localhost",11810,"username","password")'
              #查看协调节点的快照信息
              $ sdb 'db.snapshot(SDB_SNAP_DATABASE)'
              {
              "TotalNumConnects": 244589540332,
              "TotalDataRead": 78737322975,
              "TotalIndexRead": 198453345,
              ……
              "ErrNodes": [
              {
              "NodeName": "p_sdb_1:11820",
              "Flag": -79
              }
              ]
              }
              Return 1 row(s).
              Takes 0.27826s.
              NodeName 是出故障节点的机器名与端口号,Flag 则是尝试连接时所得到的错误码。在本例中,-79代表该节点处于不可用的状态。经过查看日志分析出11820这个节点的磁盘损坏导致节点不可用,需要联系管理员换磁盘。

              • 查看系统资源

              查看集群内存,硬盘系统资源使用情况。进入sdbtop主窗口,按‘t’键,列出数据库集群资源使用情况,按tab键调整输出模式,为AVERAGE时观察集群的写入,读取平均速度。Sdbtop默认刷新频率为3s,可以按r键输入数字调整刷新频率。

              集群中有三台机器,每台机器一个数据节点。从图中可以看出集群总内存 RAM 为7.9G,集群总空闲内存FreeRAM:3.8G,集群硬盘总存储大小 DiskSpace:113G,总存储剩余大小 FreeDiskSpace:72G。当集群规模较大时,sdbtop 工具可以直观的展现整个集群的内存、CPU、硬盘使用情况,尤其是内存和硬盘,无需登录到每台服务器上去查看。

              • 查看系统会话情况

              进入sdbtop主窗口,按‘s’键,列出数据库集群会话情况,按 tab 键调整输出模式,为 AVERAGE 时观察集群的写入,读取平均速度。sdbtop 默认刷新频率为3s,可以按r键输入数字调整刷新频率。
              按“shift+c”键根据条件进行过滤。如查看复制会话读写信息:输入Type:”ReplAgent”,按左右键查看复制读写信息。
              输入Type: "ShardAgent”,查看外部连接读写信息以及操作的具体集合空间、集合。按左右键可以查看会话的性能情况。


              总结


              通过对 sdbtop 的介绍且结合 sdbtop 诊断问题的案例,本文比较系统全面的介绍了 sdbtop 工具,此工具功能丰富,允许用户在图形化界面中监控整个集群。同时,sdbtop 的使用简单,能够快速上手,是运维人员问题进行定位,集群运维检查必不可少的利器。


              往期技术干货
              巨杉Tech | 巨杉数据库数据高性能数据导入迁移实践

              巨杉⼯具系列之一 | ⼤对象存储⼯具sdblobtool

              巨杉Tech | 基于Kafka+Spark+SequoiaDB实时处理架构快速实战

              巨杉Tech | SequoiaDB数据域及存储规划

              巨杉Tech | SparkSQL+SequoiaDB 性能调优策略

              巨杉Tech | 使用 etlAlchemy 工具迁移数据实战

              巨杉Tech | Hbase迁移至SequoiaDB 实战

              巨杉Tech | SequoiaDB 巨杉数据库高可用容灾测试

              巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

              巨杉学习笔记 | SequoiaDB MySQL导入导出工具使用实战

              巨杉内核笔记 | 会话(Session)

              180秒揭秘数据库金融级灾备架构



              点击阅读原文,获取更多精彩内容~

              最后修改时间:2019-12-14 09:44:43
              文章转载自巨杉数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论