2.3.0 版本的 OCP 云平台为您提供常用性能监控的功能,当前衡量性能的主要指标包括:QPS、TPS、SQLS。

QPS

QPS 反映集群组、集群、租户、服务器上每秒执行的查询次数,目前性能趋势界面中除集群组维度外,均可查询到分钟级、秒级 QPS 监控图。

监控服务器.jpg

  • 选择起止时间范围,精确到秒。
  • 选择统计周期(精度),可选择按分钟和按秒两种。

注意:OCP 的性能趋势界面大部分监控项均可查询到不同统计周期的监控图,但对部分指标按分钟和按秒两种维度采集方式有所不同,如TPS、ACTIVE_MEMSTORE(活跃内存)等;大部分恒定指标不采集秒级监控,如DISK_SIZE、DISK_PERCENT等;

  • 单击查看详情,进入独立展示小界面。

image.png

TPS

TPS 反映集群组、集群、租户、服务器上每秒执行事务次数,包括 INSERT、REPLACE、UPDATE、DELETE 四种 DML 操作,同 QPS 除集群组维度外,集群、租户、服务器维度均支持查询分钟级和秒级,其中分钟级和秒级监控显示略有差异。

由于秒级监控采样时无法在曲线图中明确标示出SQL每秒实际影响数据行数,故 TPS 秒级监控只展示实际提交至 OceanBase 数据库中执行 SQL 语句行数,所以TPS指标秒级监控图,只展示 TPS、SQL_INSERT_PS、SQL_REPLACE_PS、SQL_UPDATE_PS、SQL_DELETE_PS 五个指标。

  • TPS 指标分钟级监控图

    tps1.jpg

  • TPS 指标秒级监控图

    tps2.jpg

这里着重说明下监控图中不同示线指标意义,日常集群性能分析及 SQL 事务分析时此图具有重要参考意义:

指标

含义

TPS代表当前时间每秒执行总事务量,为 INSERT、REPLACE、UPDATE、DELETE 四种 DML 总量之和
DELETE_ROW_COUNT代表当前时间每秒 DELETE 语句执行时被 DELETE 的数据行数,注意是行数,并不是 DELETE 语句的 SQL 数,反映 DELETE 语句在 OceanBase 数据库中执行时每秒  DELETE 的记录数
INSERT_ROW_COUNT代表当前时间每秒 INSERT 语句执行时被插入表中的行数,同上个指标一样,反映 INSERT 到库中的每秒数据行数
UPDATE_ROW_COUNT代表当前时间每秒 UPDATE 语句执行时被 UPDATE 的数据行数,同前两个指标;反映 UPDATE 语句在库中实际影响行数
SQL_INSERT_PS代表当前时间每秒执行 INSERT 语句数,即实际从客户端提交的 INSERT 语句在 OceanBase 数据库中的执行数;比较常见的情况是在 BATCH INSERT 事务或一句 INSERT 事务中多个 VALUES 的情况下,此指标远小于 INSERT_ROW_COUNT 指标
SQL_REPLACE_PS

代表当前时间每秒执行 REPLACE 语句数,即实际从客户端提交的 REPLACE 语句在 OceanBase 数据库中的执行数

注意

由于 REPLACE 语句执行后会被数据库解析成 INSERT 或 UPDATE 语句,故此监控图中未设置 REPLACE 相关的 ROW_COUNT 指标;当 SQL_REPLACE_PS 的指标较大时, INSERT 和 UPDATE

的 ROW_COUNT 会对应增加

SQL_UPDATE_PS代表当前时间每秒执行 UPDATE 语句数,即实际从客户端提交的 UPDATE 语句在 OceanBase 数据库中的执行数;与 INSERT 一样,在 BATCH UPDATE 大事务或多行 UPDATE 事务语句执行时,此指标远小于 UPDATE_ROW_COUNT 指标
SQL_DELETE_PS代表当前时间每秒执行 DELETE 语句数,即实际从客户端提交的 DELETE 语句在 OceanBase 数据库中执行的行数;与 INSERT 和 UPDATE 一样,在 BATCH DELETE 大事务或多行 DELETE 事务语句执行时,此指标远小于 DELETE_ROW_COUNT 指标

SQLS

SQLS 反映集群、租户、服务器上每秒 SQL 语句执行数量。

image.png

其中三个明细指标如下表所示。

指标

说明

SQL_LOCAL_COUNT

本地执行 SQL 量,由于OceanBase 数据库为分布式数据库,故 SQL 有可能直接在当前处理节点进行执行,OCP 定义这种SQL类型为 LOCAL 语句,表示 SQL 在节点本地执行,生产中此类 SQL 执行效率最高。

SQL_DISTRIBUTED_COUNT分布式执行 SQL 量,即需要在多个 partition 上执行后才能返回结果的 SQL(多个 partition 可能分布在不同节点也可能分布在同一个节点),OCP 定义这种 SQL 类型为 DISTRIBUTED 语句,表示 SQL 为分布式 SQL,需多个节点执行后才能返回,生产中常见此类 SQL 为查询 SQL,执行效率相对较低。
SQL_REMOTE_COUNT远程调用执行 SQL 量,由于 OceanBase 数据库分布式数据库特点,某些 OceanBase 数据库节点接收处理 SQL 后发现本地数据无法满足返回要求,需发送 SQL 到其他 OceanBase 数据库节点进行处理并返回的一类 SQL,OCP 统一定义为 REMOTE 语句,由于网络 RPC 耗时,此类 SQL 执行效率相对较低。

下面列出一些常见问题诊断用到的监控指标,供 DBA 参考。

监控

诊断

服务器级别 CPU 监控诊断物理机的 CPU 使用率是否达到 100%
租户级别 ACTIVE_MEMSTORE诊断租户转储和合并时间及次数
服务器级别 IO 监控诊断物理机 IO 的使用率是否达到 100%
服务器级别 NET 监控诊断物理机的网络带宽流量是否达到最高值
集群级别队列监控 QUEUE_COUNT、QUEUE_RT诊断请求排队情况
集群级别锁等待监控 MEMSTORE_LOCK_COUNT、MEMSTORE_LOCK_RT诊断集群锁等待情况
集群级别缓存命中率监控 PLANCACHE_HIT_RATE诊断 SQL 缓存命中情况
集群级别事务提交情况监控 TRANS_COUNT、TRANS_RT诊断客户端事务提交数及耗时情况(TPS RT为 OceanBase 数据库侧事务提交耗时)

OCP监控项及其说明列表

监控项名称

监控项说明

QPS

每秒 select 执行次数

TPS

每秒 insert、replace、update、delete 执行次数

ACTIVESESSION

活跃连接数

QPS_RT

实时 select 语句执行时间

TPS_RT

实时 insert、replace、update、delete 语句执行时间

SQL_DISTRIBUTED_COUNT

分布式 SQL 执行次数

SQL_LOCAL_COUNT

本地 SQL 执行次数

SQL_REMOTE_COUNT

远程 SQL 执行次数

INNER_SQL_CONNECTION_EXECUTE_COUNT

内部 SQL 连接执行次数

INNER_SQL_CONNECTION_EXECUTE_RT

内部 SQL 连接执行时间

BLOCK_CACHE_HIT_PERCENT

块缓存命中百分比

BLOCK_INDEX_CACHE_HIT_PERCENT

块索引缓存命中百分比

BLOOM_FILTER_CACHE_HIT_PERCENT

BLOOM FILTER 缓存命中百分比

BLOOM_FILTER_FILT_PERCENT

BLOOM FILTER 缓存拦截百分比

CLOG_CACHE_HIT_PERCENT

CLOG 缓存命中百分比

LOCATION_CACHE_HIT_PERCENT

位置缓存命中百分比

LOCATION_CACHE_PROXY_HIT_PERCENT

PROXY 位置缓存命中百分比

PLAN_CACHE_HIT_RATE

执行计划缓存命中百分比

ROW_CACHE_HIT_PERCENT

行缓存命中百分比

MYSQL_PACKET_IN

收到的 MySQL 请求数

MYSQL_PACKET_OUT

发出的 MySQL 请求数

MYSQL_PACKET_IN_BYTES

收到的 MySQL 请求字节数

MYSQL_PACKET_OUT_BYTES

发出的 MySQL 请求字节数

MYSQL_DELIVER_FAIL

deliver MySQL 请求失败数量

RPC_DELIVER_FAIL

Deliver RPC 请求失败数量

RPC_PACKET_IN

收到的 RPC 请求个数

RPC_PACKET_OUT

发出的 RPC 请求个数

RPC_PACKET_IN_BYTES

收到的 RPC 请求字节数

RPC_PACKET_OUT_BYTES

发出的 RPC 请求字节数

RPC_NET_FRAME_RT

RPC 网络包在网络框架层的延迟,即从收到该包,到将该包投递到相关队列前花费的时间

RPC_NET_RT

网络包从发出时刻到接收时刻的时间延迟,注意这里两个时间是在不同的机器上记录的,比如从 A 机器发送网络包到 B 机器,那么发出时刻在 A 机器记录,接收时刻在 B 机器记录

REQUEST_DEQUEUE_COUNT

从处理队列拿出的请求数量

REQUEST_ENQUEUE_COUNT

成功进入处理队列的请求数量

REQUEST_QUEUE_TIME

请求从被接收到处理的等待时间

TRANS_COMMIT_LOG_SYNC_COUNT

完成多数派的 Commit Log 的数量

TRANS_COMMT_LOG_SYNC_RT

Commit Log 从提交到达到多数派所花费的时间

TRANS_COMMT_COUNT

事务提交次数

TRANS_MULTI_PARTITION_COUNT

多 Partition 的事务数

TRANS_ROLLBACK_COUNT

事务 Rollback 次数

TRANS_SINGLE_PARTITION_COUNT

单 Partition 的事务数,即一个事务只涉及到一个 Partition

TRANS_START_COUNT

开启事务的次数,也包括 autocommit 的事务

TRANS_SYSTEM_TRANS_COUNT

系统事务的次数,即 OceanBase 数据库内部查询、管理元数据的 SQL

TRANS_TIMEOUT_COUNT

超时事务数

TRANS_USER_TRANS_COUNT

用户事务的次数

TRANS_COMMIT_RT

事务 commit 阶段消耗的时间

TRANS_ROLLBACK_RT

事务 rollback 阶段的消耗时间

TRANS_RT

事务总消耗时间,即从开始到结束的总耗时

MEMSTORE_READ_LOCK_FAIL_COUNT

MEMSTORE 读锁失败次数

MEMSTORE_READ_LOCK_SUCC_COUNT

MEMSTORE 读锁成功次数

MEMSTORE_WRITE_LOCK_FAIL_COUNT

MEMSTORE 写锁失败次数

MEMSTORE_WRITE_LOCK_SUCC_COUNT

MEMSTORE 写锁成功次数

MEMSTORE_READ_LOCK_WAIT_TIME

MEMSTORE 等待读锁时间

MEMSTORE WRITELOCK_WAIT_TIME

MEMSTORE 等待写锁时间

MEMSTORE_APPLY_FAIL_COUNT

MEMSTORE apply 失败次数

MEMSTORE APPLY_SUCC_COUNT

MEMSTORE apply 成功次数

MEMSTORE_GET_FAIL_COUNT

MEMSTORE get 查询失败次数

MEMSTORE_GET_SUCC_COUNT

MEMSTORE get 查询成功次数

MEMSTORE_SCAN_FAIL_COUNT

MEMSTORE scan 查询失败次数

MEMSTORE_SCAN_SUCC_COUNT

MEMSTORE scan 查询成功次数

MEMSTORE_APPLY_RT

MEMSTORE apply 花费时间

MEMSTORE_GET_RT

MEMSTORE get 请求花费时间

MEMSTORE_SCAN_RT

MEMSTORE scan 请求花费时间

MEMSTORE_ROW_COUNT

MEMSTORE 数据行数

IO_READ_COUNT

IO 读次数

IO_WRITE_COUNT

IO 写次数

IO_READ_RT

IO 读时间

IO_WRITE_RT

IO 写时间

IO_READ_SIZE

IO 读字节数

IO_WRITE_SIZE

IO 写字节数

IO_PREFETCH_MICRO_BLOCK_COUNT

IO 预读取微块个数

IO_PREFETCH_UNCOMPRESS_MICRO_BLOCK_COUNT

IO 预读取未压缩微块个数

IO_READ_MICRO_INDEX_COUNT

IO 读取微块索引的次数

IO_PREFETCH_MICRO_BLOCK_SIZE

IO 预读取微块字节数

IO_PREFETCH_UNCOMPRESS_MICRO_BLOCK_SIZE

IO 预读取未压缩微块字节数

IO_READ_MICRO_INDEX_SIZE

IO 读取微块索引的字节数

PARTITION_TABLE_OPERATOR_GET_COUNT

partition table get 次数

PARTITION_TABLE_OPERATOR_GET_RT

partition table get 消耗时间

REFRESH_SCHEMA_COUNT

刷新 Schema 次数

REFRESH_SCHEMA_RT

刷新 Schema 时间

CLOG_CB_RT

CLOG 回调耗时

CLOG_COUNT

CLOG 数目

CLOG_EVENT_RT

CLOG 发生的事件(takeover、revoke 等)数目

CLOG_FLUSH_TASK

CLOG 刷盘任务数

CLOG_GROUP_SIZE

CLOG groupcommit 相关统计项

CLOG_READ

CLOG 读盘相关统计项

CLOG_RPC_RT

CLOG RPC 相关统计项

CLOG_RT

CLOG RT 等统计项

CLOG_SIZE

CLOG SIZE 等统计项

ACTIVE_MEMSTORE_USED

active memstore 的使用值

MAJOR_FREEZE_TRIGGER

触发 major freeze 的阈值

CPU_USAGE

租户当前 CPU 使用量

MIN_CPU_SIZE

租户最小 CPU 保证

MAX_CPU_SIZE

租户最大 CPU 限制

LOCATION_CACHE_PROXY_HIT

PROXY 位置缓存命中次数

LOCATION_CACHE_PROXY_MISS

PROXY 位置缓存未命中次数

LOCATION_CACHE_RENEW_COUNT

位置缓存刷新次数

LOCATION_CACHE_RPC_SUCC_COUNT

位置缓存成功请求 RPC 的次数

MEMORY_USAGE

租户当前内存使用量

MIN_MEMORY_SIZE

租户最小内存保证

MAX_MEMORY_SIZE

租户最大内存限制

MEMSTORE_LIMIT

Memstore 阈值

TOTAL_MEMSTORE_USED

总的 Memstore 使用值

DATA_SIZE

租户总数据大小

DISK_USAGE

磁盘使用量

LEADER_DATA_SIZE

LEADER 机器的数据大小

ABORT_LOG_REPLAY_RT

两阶段提交中 ABORT 日志回放到内存中使用的时间

CLEAR_LOG_REPLAY_RT

两阶段提交中 CLEAR 日志回放到内存中使用的时间

COMMIT_LOG_REPLAY_RT

两阶段提交中 COMMIT 日志回放到内存中使用的时间

PREPARE_LOG_REPLAY_RT

两阶段提交中 PREPARE 日志回放到内存中使用的时间

REDO_LOG_REPLAY_RT

两阶段提交中 REDO 日志回放到内存中使用的时间

PLAN_CACHE_MEM_HOLD

计划缓存占用的内存大小

PLAN_CACHE_MEM_USED

计划缓存实际使用的内存大小

PLAN_CACHE_PLAN_NUM

计划缓存中执行计划的数量

PLAN_CACHE_SQL_NUM

计划缓存中执行 SQL 的数量

PLAN_CACHE_STMTKEY_NUM

计划缓存声明 Key 的数量

RE_SUBMITTED_FREEZE_TASK_COUNT

重新提交的冻结任务数量

RE_SUBMITTED_OFFLINE_TASK_COUNT

重新提交的下线任务数量

RE_SUBMITTED_TRANS_TASK_COUNT

重新提交的事务任务数量