2.3.0 版本的 OCP 云平台为您提供常用性能监控的功能,当前衡量性能的主要指标包括:QPS、TPS、SQLS。
QPS
QPS 反映集群组、集群、租户、服务器上每秒执行的查询次数,目前性能趋势界面中除集群组维度外,均可查询到分钟级、秒级 QPS 监控图。
- 选择起止时间范围,精确到秒。
- 选择统计周期(精度),可选择按分钟和按秒两种。
注意:OCP 的性能趋势界面大部分监控项均可查询到不同统计周期的监控图,但对部分指标按分钟和按秒两种维度采集方式有所不同,如TPS、ACTIVE_MEMSTORE(活跃内存)等;大部分恒定指标不采集秒级监控,如DISK_SIZE、DISK_PERCENT等;
- 单击查看详情,进入独立展示小界面。
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 指标分钟级监控图
TPS 指标秒级监控图
这里着重说明下监控图中不同示线指标意义,日常集群性能分析及 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 语句执行数量。
其中三个明细指标如下表所示。
指标 | 说明 |
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 | 重新提交的事务任务数量 |