1、介绍
对于SequoiaDB,有几种方式收集系统信息诊断数据库的性能问题,最常见的方式是使用快照。快照用于获取数据库某个时间点的系统信息,但并不能反映多个时间点系统信息变化的数据。 SequoiaDB自带sdbtop工具,该工具是 SequoiaDB 数据库的性能监控工具,在命令行模式下提供了一个图形用户界面,可用来实时监控和查看集群中各个节点的监视信息,本文主要介绍了sdbtop的使用及如何利用sdbtop在日常运维中监控SequoiaDB和故障排除。
2、sdbtop使用
2.1、sdbtop语法
在SequoiaDB安装目录bin中执行:./sdbtop –h显示参数信息。
参数 | 缩写 | 描述 |
--help | -h | 返回基本帮助和用法文本 |
--version | -v | sdbtop版本信息 |
--confpath | -c | sdbtop 的配置文件,sdbtop 界面形态以及输出字段都依赖该文件(缺省使用默认配置文件) |
--hostname | 指定需要监控的主机名 | |
--servicename | 指定监控的端口服务名 | |
--usrname | 数据库用户名 | |
--password | 数据库密码 | |
--ssl | 使用 SSL 连接。 |
执行下面的命令进入到sdbtop命令行模式下的图形化用户界面主窗口:
./sdbtop –i localhost –s 11810
这条命令中,sdbtop 使用配置文件为安装目录中conf/sample/sdbtop.xml,监控主机为当前主机,端口服务名为11810,用户名和密码为空。
2.2、sdbtop组成部分
进入到sdbtop主窗口后,主要有三部分组成,头部区域、中间区域、底部区域。
头部区域主要包括版本信息、刷新频率(refresh)、数据计算模式(displayMode)、快照模式(snapshotMode)、打印模式(snapshotMode)、快照获取模式(snapshotModeInput)、监控主机名(hostname)、监控端口服务名(servicename)、排序方式(sortingWay)、排序字段(sortingWay)、过滤行号(filtering Number)、登录用户名(usrName)。
中间区域主要显示监控信息。具体快捷键如下:
主窗口选择快捷键说明:
参数 | 描述 |
m | 返回主窗口 |
s | 列出数据库节点上的所有会话 |
c | 列出数据库节点上的所有集合空间 |
t | 列出数据库节点上的系统资源使用情况 |
d | 列出数据库节点的数据库监视信息 |
进入主窗口后快捷操作键说明:
参数 | 描述 |
G | global_snapshot,监控所有的数据节点组 |
g | group_snapshot,指定监控某个数据节点组 |
n | node_snapshot,列出指定的数据库节点的监视信息 |
r | 设置刷屏的时间间隔,单位秒/s |
A | 将监视信息按照某列进行顺序排序 |
D | 将监视信息按照某列进行逆序排序 |
C | 将监视信息按照某个条件进行筛选 |
Q | 返回没有使用条件进行筛选前的监视信息 |
N | 将监视信息中对应行号的记录过滤不显示 |
W | 返回没有使用行号进行过滤前的监视信息 |
h | 查看使用帮助 |
Esc | 取消已进入的操作 |
Enter | 返回上一次监视界面,(在已进入 help 帮助输出中有效) |
F5 | 强制刷新后台监视信息 |
< | 向左移动,以查看隐藏的左边列的监视信息 |
> | 向右移动,以查看隐藏的右边列的监视信息 |
q | 退出程序 |
Tab | 切换数据计算的模式(绝对值,平均值,差值三个模式) |
例如:进入主窗口后按‘d’键,列出数据库节点的数据库监视信息。
按‘Tab’键,可以看到屏幕左上方的‘displayMode’的值会发生切换:绝对值(ABSOLUTE),平均值(AVERAGE),差值(DELTA)三个模式。
按‘r’键,可以看到屏幕下方的‘please input the refresh interval(eg: 5) :’,输入数字改变屏幕刷新频率。
2.3、sdbtop监控内容
sdbtop提供了对数据库节点会话、集合空间、系统资源使用情况、数据库的监控单元。通过这些信息,用户可以了解当前数据库的连接信息以及连接的活动情况,数据库集合空间的分布以及使用情况,数据库集群的资源使用情况,以及数据库集群的读写、更新、删除、复制、索引读写等性能情况。
1、数据库会话监控
进入主窗口,按‘s’键,列出数据库节点的所有会话信息
按‘Tab’键,可以看到屏幕左上方的‘displayMode’的值会发生切换
按‘r’键,在屏幕最下方输入‘2’,回车,设置刷新间隔时间,可以看到屏幕左上方的‘refresh’的值变为 2
按‘A’键,并输入‘TID’,列表结果按照 TID 进行顺序排序
按‘N’键,并输入1,列表中将原来行号为1的记录过滤不显示
按‘W’键,返回没有按行号进行过滤前的列表信息
按‘C’键,并输入‘TID:39895”进行筛选,则只显示 TID 值为39895的记录
按‘Q’键,返回没有按照筛选条件前的列表信息
按‘<’或者‘>’键,可以查看隐藏在左边或者右边的列
数据库节点的所有会话监控信息可以从数据库SDB_SNAP_SESSIONS快照中获取,在上述窗口中,各监控字段说明如下:
字段名 | 类型 | 描述 |
SessionID | 字符串 | 会话 ID(主机名:端口号:ID) |
TID | 整型 | 该会话所对应的系统线程 ID |
Type | 字符串 | EDU 类型 |
Name | 字符串 | EDU 名,一般系统 EDU 名为空 |
QueueSize | 整型 | 等待处理请求的队列长度 |
ProcessEventCount | 长整型 | 已经处理请求的数量 |
Contexts | 长整型数组 | 上下文 ID 数组,为该会话所包含的所有上下文列表 |
DataRead | 长整型 | 数据记录读 |
IndexRead | 长整型 | 索引读 |
DataWrite | 长整型 | 数据记录写 |
IndexWrite | 长整型 | 索引写 |
DataUpdate | 长整型 | 总更新记录数量 |
DataDelete | 长整型 | 总删除记录数量 |
DataInsert | 长整型 | 总插入记录数量 |
DataSelect | 长整型 | 总选取记录数量 |
DataRead | 长整型 | 总数据读 |
DataReadTime | 长整型 | 总数据读时间(毫秒) |
DataWriteTime | 长整型 | 总数据写时间(毫秒) |
ConnectTimestamp | 时间戳 | 连接发起时间 |
LastOpType | 字符串 | 最后一次操作的类型,如:insert,update |
LastOpBegin | 字符串 | 最后一次操作的起始时间 |
LastOpEnd | 字符串 | 最后一次操作的结束时间 |
LastOpInfo | 字符串 | 最后一次操作的详细信息 |
UserCPU | 浮点数 | 用户 CPU(秒) |
SysCPU | 浮点数 | 系统 CPU(秒) |
2、数据库集合空间监控
进入主窗口,按‘c’键,列出数据库节点上的所有集合空间
快捷键功能可参考数据库会话监控。
数据库节点上的所有集合空间可以从数据库SDB_SNAP_COLLECTIONSPACES快照中获取,在上述窗口中,各监控字段说明如下:
字段名 | 类型 | 描述 |
Name | 字符串 | 集合空间名 |
PageSize | 整型 | 集合空间数据页大小 |
Collection | 字符串数组 | 集合空间中所包含的所有集合 |
Group.GroupName | 字符串 | 该集合空间所在的分区组名列表 |
3、 数据库系统资源使用情况监控
进入主窗口,按‘t’键,列出数据库节点上的所有集合空间
快捷键功能可参考数据库会话监控。
数据库系统资源使用情况可以从数据库SDB_SNAP_SYSTEM快照中获取,在上述窗口中,各监控字段说明如下:
字段名 | 类型 | 描述 |
UserCPU | 浮点数 | 操作系统启动后所消耗的总用户 CPU(秒) |
SysCPU | 浮点数 | 操作系统启动后所消耗的总系统 CPU(秒) |
IdleCPU | 浮点数 | 操作系统启动后所消耗的总空闲 CPU(秒) |
OtherCPU | 浮点数 | 操作系统启动后所消耗的总其它 CPU(秒) |
RAM | 长整型 | 当前操作系统的总内存空间(字节) |
FreeRAM | 长整型 | 当前操作系统的空闲内存空间(字节) |
MemorySwap | 长整型 | 当前操作系统的总交换空间(字节) |
FreeSwap | 长整型 | 当前操作系统的空闲交换空间(字节) |
VirtualMemory | 长整型 | 当前操作系统的总虚拟空间(字节) |
FreeVirtual | 长整型 | 当前操作系统的空闲虚拟空间(字节) |
DiskSpace | 长整型 | 数据库路径总空间(字节) |
FreeDiskSpace | 长整型 | 数据库路径空闲空间(字节) |
4、 数据库集群监控
5、 进入主窗口,按‘d’键,列出数据库集群监控信息
快捷键功能可参考数据库会话监控。
数据库集群监控信息可以从数据库SDB_SNAP_DATABASE快照中获取,在上述窗口中,各监控字段说明如下:
字段名 | 类型 | 描述 |
NumConnects | 整型 | 数据库连接请求数量 |
DataRead | 长整型 | 总数据读请求 |
IndexRead | 长整型 | 总索引读请求 |
DataWrite | 长整型 | 总数据写请求 |
IndexWrite | 长整型 | 总索引写请求 |
Update | 长整型 | 总更新记录数量 |
Delete | 长整型 | 总删除记录数量 |
Insert | 长整型 | 总插入记录数量 |
ReplUpdate | 长整型 | 复制更新记录数量 |
ReplDelete | 长整型 | 复制删除记录数量 |
ReplInsert | 长整型 | 复制插入记录数量 |
Select | 长整型 | 总选择记录数量 |
Read | 长整型 | 总读取记录数量 |
ReadTime | 长整型 | 总读取时间(毫秒) |
WriteTime | 长整型 | 总写入时间(毫秒) |
2.3 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>
配置成功后截图:
2.4 sdbtop使用案例
1、在使用sdbimprt工具导入数据时,查看sdb集群的平均写入速度;
进入sdbtop主窗口,按‘d’键,列出数据库集群监控信息,按tab键调整输出模式,为AVERAGE时观察集群的写入,读取平均速度。Sdbtop默认刷新频率为3s,可以按r键输入数字调整刷新频率。
从图中可以看出,数据读为0,数据写为每秒272729条记录,索引读和写为0,更新、删除为0。ReplInsert为复制插入记录数量图中为0。
2、查看集群内存,硬盘系统资源使用情况;
进入sdbtop主窗口,按‘t’键,列出数据库集群资源使用情况,按tab键调整输出模式,为AVERAGE时观察集群的写入,读取平均速度。Sdbtop默认刷新频率为3s,可以按r键输入数字调整刷新频率。
集群中有两台机器,每台机器一个数据节点。从图中可以看出集群总内存RAM为:2G,集群总空闲内存FreeRAM:150M,集群硬盘总存储大小DiskSpace为:36G,总存储剩余大小FreeDiskSpace为:10G。当集群规模较大时,sdbtop工具可以直观的展现整个集群的内存,CPU,硬盘使用情况,尤其是内存和硬盘,无需登录到每台服务器上去查看。
3、查询系统会话情况
进入sdbtop主窗口,按‘s’键,列出数据库集群会话情况,按tab键调整输出模式,为AVERAGE时观察集群的写入,读取平均速度。Sdbtop默认刷新频率为3s,可以按r键输入数字调整刷新频率。
按“shift+c”键根据条件进行过滤。如查看复制会话读写信息:输入Type:”ReplAgent”,按左右键查看复制读写信息。
输入Type:”ShardAgent”,查看外部连接读写信息以及操作的具体集合空间、集合。按左右键可以查看会话的性能情况。
Type为EDU可以分为用户 EDU 与系统 EDU,分别代表执行用户任务的线程,与执行系统任务的线程。
具体类型如下:
用户EDU
名称 | 类型 | 描述 |
Agent | 代理 | 代理线程负责由 svcname 服务传入的请求,一般来说该请求由用户直接传入 |
ShardAgent | 分区代理 | 分区代理线程负责由 shardname 服务传入的请求,一般来说该请求由协调节点传入数据节点 |
CoordAgent | 协调代理 | 协调代理线程负责由svcname服务传入的请求,一般来说该请求由用户直接传入,仅作用于协调节点 |
ReplAgent | 复制代理 | 复制代理线程负责由 replname 服务传入的请求,一般来说该请求由数据主节点传向从节点,多作用于非协调节点 |
HTTPAgent | HTTP 代理 | HTTP 代理线程负责由 httpname 服务传入的 REST 请求,一般来说该请求由用户直接传入 |
系统 EDU
名称 | 类型 | 描述 |
TCPListener | 服务监听 | 该线程负责监听 svcname 服务,并启动 Agent 代理线程 |
HTTPListener | HTTP 监听 | 该线程负责监听 httpname 服务,并启动 Agent 代理线程 |
Cluster | 集群管理 | 集群管理线程用于维护集群的基本框架,启动 ReplReader 与 ShardReader 线程 |
ReplReader | 复制监听 | 复制监听线程负责由 replname 服务传入的请求,并启动 ReplAgent 代理线程 |
ShardReader | 分区监听 | 分区监听线程负责由 shardname 服务传入的请求,并启动 ShardAgent 代理线程 |
LogWriter | 日志写 | 日志写线程用于将日志缓冲区中的数据写入日志文件 |
WindowsListener | Windows 事件监听 | Windows 环境特有,用于监听 Windows 中 SequoiaDB 定义事件 |
Task | 后台任务处理 | 后台任务处理线程,一般来说用于处理后台任务请求,例如数据切分 |
CatalogMC | 编目主控 | 编目主控线程用于接收和分发编目节点接收到的请求 |
CatalogNM | 编目节点控制 | 编目节点控制线程用于处理编目节点内部集群信息相关的请求 |
CatalogManager | 编目控制 | 编目控制线程用于处理编目节点内部元数据相关的请求 |
CatalogNetwork | 编目网络监听 | 编目网络监听线程用于监听编目服务 catalogname 下的请求 |
CoordNetwork | 协调网络监听 | 协调网络监听线程用于监听分区的请求 |
3、总结
sdbtop利用数据库的快照信息实现了对数据库集合空间、会话、系统使用自有、数据库整体信息的监控,并通过配置文件对具体的监控选项进行配置方便数据库使用人员定制自己所需的监控信息。