title | summary |
---|---|
TiDB Dashboard 监控页面 |
介绍如何通过 TiDB Dashboard 监控页面查看 Performance Overview 面板,以及如何理解面板上的关键指标项。 |
从 TiDB Dashboard 监控页面,你可以查看性能分析和优化工具 Performance Overview 面板。借助 Performance Overview 面板,你可以高效地进行性能分析,确认用户响应时间的瓶颈是否在数据库中。如果数据库是整个系统的瓶颈,你可以通过数据库时间概览和 SQL 延迟的分解,定位数据库内部的瓶颈点。详情请参考 TiDB 性能分析和优化方法。
登录 Dashboard 后点击左侧导航的 Monitoring (监控)可以进入此功能页面:
如果你使用 TiUP 部署 TiDB,你也可以在 Grafana 上查看 Performance Overview 面板。监控架构参见 TiDB 监控框架概述。
Performance Overview 面板按总分结构对 TiDB、TiKV 和 PD 的性能指标进行了编排组织,包含以下三部分内容:
- 总体概览:数据库时间和 SQL 执行时间概览。通过颜色优化法,你可以快速识别数据库负载特征和性能瓶颈。
- 资源负载:关键指标和资源利用率,包含数据库 QPS、应用和数据库的连接信息和请求命令类型、数据库内部 TSO 和 KV 请求 OPS、TiDB 和 TiKV 的资源使用概况。
- 自上而下的延迟分解:Query 延迟和连接空闲时间对比、Query 延迟分解、execute 阶段 TSO 请求和 KV 请求的延迟、TiKV 内部写延迟的分解等。
以下为 Performance Overview 面板监控说明:
database time
:每秒的总数据库时间sql_type
:每种 SQL 语句每秒消耗的数据库时间
database time
:每秒的总数据库时间get token/parse/compile/execute
:4 个 SQL 处理阶段每秒消耗的数据库时间
execute 执行阶段为绿色,其他三个阶段偏红色系,如果非绿色的颜色占比明显,意味着在执行阶段之外数据库消耗了过多时间,需要进一步分析根源。
execute time
:execute 阶段每秒消耗的数据库时间tso_wait
:execute 阶段每秒同步等待 TSO 的时间kv request type
:execute 阶段每秒等待每种 KV 请求类型的时间,总的 KV 请求等待时间可能超过 execute time,因为 KV 请求是并发的。
绿色系标识代表常规的写 KV 请求(例如 Prewrite 和 Commit),蓝色系标识代表常规的读 KV 请求,其他色系标识需要注意的问题。例如,悲观锁加锁请求为红色,TSO 等待为深褐色。如果非蓝色系或者非绿色系占比明显,意味着执行阶段存在异常的瓶颈。例如,当发生严重锁冲突时,红色的悲观锁时间会占比明显;当负载中 TSO 等待的消耗时间过长时,深褐色会占比明显。
QPS
:按SELECT
、INSERT
、UPDATE
等类型统计所有 TiDB 实例上每秒执行的 SQL 语句数量
CPS By Type
:按照类型统计所有 TiDB 实例每秒处理的命令数(Command Per Second)
Queries Using Plan Cache OPS
:所有 TiDB 实例每秒使用 Plan Cache 的查询数量
kv request total
:所有 TiDB 实例每秒总的 KV 请求数量kv request by type
:按Get
、Prewrite
、Commit
等类型统计在所有 TiDB 实例每秒的请求数据tso - cmd
:所有 TiDB 实例每秒发送的 gRPC 请求的数量,每个 gRPC 请求包含一批 (batch) TSO 请求tso - request
:所有 TiDB 实例每秒的 TSO 请求数量
通常 tso - request 除以 tso - cmd 等于 TSO 请求 batch 的平均大小。
total
:所有 TiDB 的连接数active connections
:所有 TiDB 总的活跃连接数- 各个 TiDB 实例的连接数
CPU-Avg
:所有 TiDB 实例的平均 CPU 利用率CPU-Delta
:所有 TiDB 实例中最大 CPU 利用率减去所有 TiDB 实例中最小 CPU 利用率CPU-Max
:所有 TiDB 实例中最大 CPU 利用率CPU-Quota
:TiDB 可以使用的 CPU 核数Mem-Max
:所有 TiDB 实例中最大内存利用率
CPU-Avg
:所有 TiKV 实例的平均 CPU 利用率CPU-Delta
:所有 TiKV 实例中最大 CPU 利用率减去所有 TiKV 实例中最小 CPU 利用率CPU-Max
:所有 TiKV 实例中最大 CPU 利用率CPU-Quota
:TiKV 可以使用的 CPU 核数Mem-Max
:所有 TiKV 实例中最大内存利用率
CPU-Max
:所有 PD 实例中最大 CPU 利用率CPU-Quota
:PD 可以使用的 CPU 核数Mem-Max
:所有 PD 实例中最大内存利用率
TiDB -> Client
:从 TiDB 到客户端的出站流量统计Rocksdb -> TiKV
:TiKV 在存储层读操作过程中从 RocksDB 读取的数据流量
Client -> TiDB
:从客户端到 TiDB 的入站流量统计TiDB -> TiKV: general
:前台事务从 TiDB 写入到 TiKV 的速率TiDB -> TiKV: internal
:后台事务从 TiDB 写入到 TiKV 的速率TiKV -> Rocksdb
:从 TiKV 写入到 RocksDB 的流量RocksDB Compaction
:RocksDB compaction 操作产生的总读写 I/O 流量。
-
Duration
:执行时间解释- 从客户端网络请求发送到 TiDB,到 TiDB 执行结束后返回给客户端的时间。一般情况下,客户端请求都是以 SQL 语句的形式发送,但也可以包含
COM_PING
、COM_SLEEP
、COM_STMT_FETCH
、COM_SEND_LONG_DATA
之类的命令执行时间。 - 由于 TiDB 支持 Multi-Query,因此,客户端可以一次性发送多条 SQL 语句,如
select 1; select 1; select 1;
。此时的执行时间是所有 SQL 语句执行完成的总时间。
- 从客户端网络请求发送到 TiDB,到 TiDB 执行结束后返回给客户端的时间。一般情况下,客户端请求都是以 SQL 语句的形式发送,但也可以包含
-
avg
:所有请求命令的平均执行时间 -
99
:所有请求命令的 P99 执行时间 -
avg by type
:按SELECT
、INSERT
、UPDATE
类型统计所有 TiDB 实例上所有请求命令的平均执行时间
Connection Idle Duration 指空闲连接的持续时间。
avg-in-txn
:处于事务中,空闲连接的平均持续时间avg-not-in-txn
:没有处于事务中,空闲连接的平均持续时间99-in-txn
:处于事务中,空闲连接的 P99 持续时间99-not-in-txn
:没有处于事务中,空闲连接的 P99 持续时间
Parse Duration
:SQL 语句解析耗时统计Compile Duration
:将解析后的 SQL AST 编译成执行计划的耗时Execution Duration
:执行 SQL 语句执行计划耗时
这三个时间指标均包含均所有 TiDB 实例的平均值和 P99 值。
按 Get
、Prewrite
、 Commit
等类型统计在所有 TiDB 实例 KV 请求的平均执行时间。
按 get
、kv_prewrite
、 kv_commit
等类型统计所有 TiKV 实例对 gRPC 请求的平均执行时间。
wait - avg
:所有 TiDB 实例等待从 PD 返回 TSO 的平均时间rpc - avg
:所有 TiDB 实例从向 PD 发送获取 TSO 的请求到接收到 TSO 的平均耗时wait - 99
:所有 TiDB 实例等待从 PD 返回 TSO 的 P99 时间rpc - 99
:所有 TiDB 实例从向 PD 发送获取 TSO 的请求到接收到 TSO 的 P99 耗时
Storage Async Write Duration
:异步写所花费的时间Store Duration
:异步写入过程中,在存储循环 (store loop) 中所花费的时间Apply Duration
:异步写入过程中,在应用循环 (apply loop) 中所花费的时间
这三个时间指标都包含所有 TiKV 实例的平均值和 P99 值
平均 Storage async write duration = 平均 Store Duration + 平均 Apply Duration
Append Log Duration
:Raft append 日志所花费的时间Commit Log Duration
:Raft commit 日志所花费的时间Apply Log Duration
:Raft apply 日志所花费的时间
这三个时间指标均包含所有 TiKV 实例的平均值和 P99 值。