- 关于 TiDB
- 快速上手
- 部署集群
- 数据迁移
- 数据迁移概述
- 从 MySQL 迁移至 TiDB
- 从 CSV 文件迁移至 TiDB
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 系统调优
- 软件调优
- SQL 性能调优
- 教程
- TiDB 生态工具
- TiDB 生态工具功能概览
- TiDB 生态工具适用场景
- TiDB 工具下载
- Backup & Restore (BR)
- TiDB Binlog
- TiDB Lightning
- TiCDC 简介
- Dumpling 使用文档
- sync-diff-inspector
- Loader 使用文档
- Mydumper 使用文档
- Syncer 使用文档
- TiSpark
- 参考指南
- 架构
- 监控指标
- 安全加固
- 权限
- SQL
- SQL 语言结构和语法
- 属性
- 字面值
- Schema 对象名
- 关键字
- 用户自定义变量
- 表达式语法
- 注释语法
- SQL 语句
- ADD COLUMN
- ADD INDEX
- ADMIN
- ALTER DATABASE
- ALTER INSTANCE
- ALTER TABLE
- ALTER USER
- ANALYZE
- BACKUP
- BEGIN
- CHANGE COLUMN
- CHANGE DRAINER
- CHANGE PUMP
- COMMIT
- CREATE [GLOBAL|SESSION] BINDING
- CREATE DATABASE
- CREATE INDEX
- CREATE ROLE
- CREATE SEQUENCE
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE USER
- CREATE VIEW
- DEALLOCATE
- DELETE
- DESC
- DESCRIBE
- DO
- DROP [GLOBAL|SESSION] BINDING
- DROP COLUMN
- DROP DATABASE
- DROP INDEX
- DROP ROLE
- DROP SEQUENCE
- DROP STATS
- DROP TABLE
- DROP USER
- DROP VIEW
- EXECUTE
- EXPLAIN ANALYZE
- EXPLAIN
- FLASHBACK TABLE
- FLUSH PRIVILEGES
- FLUSH STATUS
- FLUSH TABLES
- GRANT
- GRANT
- INSERT
- KILL [TIDB]
- LOAD STATS
- MODIFY COLUMN
- PREPARE
- RECOVER TABLE
- RENAME INDEX
- RENAME TABLE
- REPLACE
- RESTORE
- REVOKE
- REVOKE
- ROLLBACK
- SELECT
- SET DEFAULT ROLE
- SET [NAMES|CHARACTER SET]
- SET PASSWORD
- SET ROLE
- SET TRANSACTION
- SET [GLOBAL|SESSION]
- SHOW [BACKUPS|RESTORES]
- SHOW ANALYZE STATUS
- SHOW [GLOBAL|SESSION] BINDINGS
- SHOW BUILTINS
- SHOW CHARACTER SET
- SHOW COLLATION
- SHOW [FULL] COLUMNS FROM
- SHOW CONFIG
- SHOW CREATE SEQUENCE
- SHOW CREATE TABLE
- SHOW CREATE USER
- SHOW DATABASES
- SHOW DRAINER STATUS
- SHOW ENGINES
- SHOW ERRORS
- SHOW [FULL] FIELDS FROM
- SHOW GRANTS
- SHOW INDEX [FROM|IN]
- SHOW INDEXES [FROM|IN]
- SHOW KEYS [FROM|IN]
- SHOW MASTER STATUS
- SHOW PLUGINS
- SHOW PRIVILEGES
- SHOW [FULL] PROCESSLIST
- SHOW PROFILES
- SHOW PUMP STATUS
- SHOW SCHEMAS
- SHOW STATS_HEALTHY
- SHOW STATS_HISTOGRAMS
- SHOW STATS_META
- SHOW [GLOBAL|SESSION] STATUS
- SHOW TABLE NEXTROWID
- SHOW TABLE REGIONS
- SHOW TABLE STATUS
- SHOW [FULL] TABLES
- SHOW [GLOBAL|SESSION] VARIABLES
- SHOW WARNINGS
- SHUTDOWN
- Split Region 使用文档
- START TRANSACTION
- TRACE
- TRUNCATE
- UPDATE
- USE
- 数据类型
- 函数与操作符
- 约束
- 生成列
- SQL 模式
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 字符集和排序规则
- 系统表
- TiDB 系统表
- INFORMATION_SCHEMA
- TiDB 简介
- ANALYZE_STATUS
- CHARACTER_SETS
- CLUSTER_CONFIG
- CLUSTER_HARDWARE
- CLUSTER_INFO
- CLUSTER_LOAD
- CLUSTER_LOG
- CLUSTER_SYSTEMINFO
- COLLATIONS
- COLLATIONCHARACTERSET_APPLICABILITY
- COLUMNS
- DDL_JOBS
- ENGINES
- INSPECTION_RESULT
- INSPECTION_RULES
- INSPECTION_SUMMARY
- KEYCOLUMNUSAGE
- METRICS_SUMMARY
- METRICS_TABLES
- PARTITIONS
- PROCESSLIST
- SCHEMATA
- SEQUENCES
- SESSION_VARIABLES
- SLOW_QUERY
- STATISTICS
- TABLES
- TABLE_CONSTRAINTS
- TABLESTORAGESTATS
- TIDBHOTREGIONS
- TIDB_INDEXES
- TIDBSERVERSINFO
- TIFLASH_REPLICA
- TIKVREGIONPEERS
- TIKVREGIONSTATUS
- TIKVSTORESTATUS
- USER_PRIVILEGES
- VIEWS
- Metrics Schema
- SQL 语言结构和语法
- UI
- CLI
- 命令行参数
- 配置文件参数
- 系统变量
- 存储引擎
- TiUP
- 遥测
- 错误码与故障诊断
- TiCDC Open Protocol
- 通过拓扑 label 进行副本调度
- 常见问题解答 (FAQ)
- 术语表
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
TiDB 重要监控指标详解
使用 TiDB Ansible 或 TiUP 部署 TiDB 集群时,一键部署监控系统 (Prometheus & Grafana),监控架构参见 TiDB 监控框架概述。
目前 Grafana Dashboard 整体分为 PD、TiDB、TiKV、Node_exporter、Overview 等。TiDB 分为 TiDB 和 TiDB Summary 面板,两个面板的区别如下:
- TiDB 面板:提供尽可能全面的信息,供排查集群异常。
- TiDB Summary 面板:将 TiDB 面板中用户最为关心的部分抽取出来,并做了些许修改。主要用于提供数据库日常运行中用户关心的数据,如 QPS、TPS、响应延迟等,以便作为外部展示、汇报用的监控信息。
以下为 TiDB Dashboard 部分监控说明:
说明
Query Summary
- 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 语句的形式发送,但也可以包含
- QPS:所有 TiDB 实例上的每秒执行的 SQL 语句数量。按照执行成功或失败(OK/Error)进行了区分
- Statement OPS:不同类型的 SQL 语句每秒执行的数量。按
SELECT
、INSERT
、UPDATE
等来统计 - QPS By Instance:每个 TiDB 实例上的 QPS。按照命令和执行结果成功或失败来统计
- Failed Query OPM:每个 TiDB 实例上,对每秒钟执行 SQL 语句发生的错误按照错误类型的统计(例如语法错误、主键冲突等)。包含了错误所属的模块和错误码
- Slow query:慢查询处理时间统计(整个慢查询耗时、Coprocessor 耗时、Coprocessor 调度等待时间)
- 999/99/95/80 Duration:不同类型的 SQL 语句执行耗时统计(不同百分位)
- Duration:执行时间
Query Detail
- Duration 80/95/99/999 By Instance:每个 TiDB 实例执行 SQL 语句的耗时统计(不同百分位)。
- Failed Query OPM Detail:每个 TiDB 实例执行 SQL 语句发生的错误按照错误类型统计(例如语法错误、主键冲突等)。
- Internal SQL OPS:整个 TiDB 集群内部 SQL 语句执行的 QPS。内部 SQL 语句是 TiDB 内部自动执行的 SQL 语句,一般由用户 SQL 语句来触发或者内部定时任务触发。
Server
- Uptime:每个 TiDB 实例的运行时间
- Memory Usage:每个 TiDB 实例的内存使用统计,分为进程占用内存和 Golang 在堆上申请的内存
- CPU Usage:每个 TiDB 实例的 CPU 使用统计
- Connection Count:每个 TiDB 的连接数
- Open FD Count:每个 TiDB 实例的打开的文件描述符统计
- Goroutine Count:每个 TiDB 实例的 Goroutine 数量
- Go GC Duration:每个 TiDB 实例的 Golang GC 耗时
- Go Threads:每个 TiDB 实例的线程数量
- Go GC Count:每个 TiDB 实例的 Golang GC 执行次数
- Go GC CPU Usage:每个 TiDB 实例的 Golang GC 使用的 CPU
- Events OPM:每个 TiDB 实例关键事件统计,例如 start,close,graceful-shutdown,kill,hang 等
- Keep Alive OPM:每个 TiDB 实例每分钟刷新监控的次数,通常不需要关注
- Prepare Statement Count:每个 TiDB 实例现存的
Prepare
语句数以及总数 - Time Jump Back OPS:每个 TiDB 实例上每秒操作系统时间回跳的次数
- Write Binlog Error:每个 TiDB 每秒写入 Binlog 失败的次数
- Get Token Duration:每个连接获取 Token 的耗时
- Handshake Error OPS:每个 TiDB 实例每秒握手错误的次数
Transaction
- Transaction OPS:每秒事务的执行数量
- Duration:事务执行的时间
- Transaction Statement Num:事务中的 SQL 语句数量
- Transaction Retry Num:事务重试次数
- Session Retry Error OPS:每秒事务重试时遇到的错误数量
- KV Transaction OPS:每个 TiDB 内部每秒执行的事务数量
- 一个用户的事务,在 TiDB 内部可能会触发多次事务执行,其中包含,内部元数据的读取,用户事务原子性地多次重试执行等
- TiDB 内部的定时任务也会通过事务来操作数据库,这部分也包含在这个面板里
- KV Transaction Duration:每个 TiDB 内部执行事务的耗时
- Commit Token Wait Duration:事务提交时的流控队列等待耗时。当出现较长等待时,代表提交事务过大,正在限流。如果系统还有资源可以使用,可以通过增大 TiDB 配置文件中
committer-concurrency
来加速提交 - Transaction Max Write KV Num:单个事务写入的最大键值对数量
- Transaction Max Write Size Bytes:单个事务写入的最大键值对大小
- Transaction Regions Num 90:单个事务写入的 Region 数量的 90% 分位
- Send HeartBeat Duration:事务发送心跳的时间间隔
- TTL Lifetime Reach Counter:事务的 TTL 达到了上限的数量。TTL 上限默认值 10 分钟,它的含义是从悲观事务第一次加锁,或者乐观事务的第一个 prewrite 开始,超过了 10 分钟。可以通过修改 TiDB 配置文件中
max-txn-ttl
来改变 TTL 寿命上限 - Statement Lock Keys:单个语句的加锁个数
- Acquire Pessimistic Locks Duration:加锁所消耗的时间
- Pessimistic Statement Retry OPS:悲观语句重试次数统计。当语句尝试加锁时,可能遇到写入冲突,此时,语句会重新获取新的 snapshot 并再次加锁
- Load Safepoint OPS:加载 Safepoint 的次数统计。Safepoint 作用是在事务读数据时,保证不读到 Safepoint 之前的数据,保证数据安全。因为,Safepoint 之前的数据有可能被 GC 清理掉
Executor
- Parse Duration:SQL 语句解析耗时统计
- Compile Duration:将解析后的 SQL AST 编译成执行计划耗时统计
- Execution Duration:执行 SQL 语句执行计划耗时统计
- Expensive Executor OPS:每秒消耗系统资源比较多的算子统计,包括 Merge Join,Hash Join,Index Look Up Join,Hash Agg,Stream Agg,Sort,TopN 等
- Queries Using Plan Cache OPS:每秒使用 Plan Cache 的查询数量统计
Distsql
- Distsql Duration:Distsql 处理的时长
- Distsql QPS:Distsql 的数量统计
- Distsql Partial QPS:每秒 Partial Results 的数量
- Scan Keys Num:每个 Query 扫描的 Key 的数量
- Scan Keys Partial Num:每一个 Partial Result 扫描的 Key 的数量
- Partial Num:每个 SQL 语句 Partial Results 的数量
KV Errors
- KV Backoff Duration:KV 每个请求重试的总时间。TiDB 向 TiKV 发送请求时可能遇到错误,TiDB 对每个向 TiKV 的请求都有重试机制,这里记录的是一个请求重试的总时间
- TiClient Region Error OPS:TiKV 返回 Region 相关错误信息的数量
- KV Backoff OPS:TiKV 返回错误信息的数量
- Lock Resolve OPS:TiDB 清理锁操作的数量。当 TiDB 的读写请求遇到锁时,会尝试进行锁清理
- Other Errors OPS:其他类型的错误数量,包括清锁和更新 SafePoint
KV Request
- KV Request OPS:KV Request 执行次数,根据 TiKV 显示
- KV Request Duration 99 by store:KV Request 执行时间,根据 TiKV 显示
- KV Request Duration 99 by type:KV Request 执行时间,根据类型显示
PD Client
- PD Client CMD OPS:PD Client 每秒执行命令数量统计
- PD Client CMD Duration:PD Client 执行命令耗时
- PD Client CMD Fail OPS:PD Client 每秒执行命令失败统计
- PD TSO OPS:TiDB 每秒从 PD 获取 TSO 的数量
- PD TSO Wait Duration:TiDB 等待从 PD 返回 TSO 的时间
- PD TSO RPC Duration:TiDB 从向 PD 发送获取 TSO 的请求到接收到 TSO 花费的时间
- Start TSO Wait Duration:TiDB 从向 PD 发送获取 start tso 请求开始到开始等待 tso 返回的时间
Schema Load
- Load Schema Duration:TiDB 从 TiKV 获取 Schema 的时间
- Load Schema OPS:TiDB 从 TiKV 每秒获取 Schema 的数量统计
- Schema Lease Error OPM:Schema Lease 出错,包括 change 和 outdate 两种,change 代表 schema 发生了变化,outdate 代表无法更新 schema,属于较严重错误,出现 outdate 错误时会报警
- Load Privilege OPS:TiDB 从 TiKV 每秒获取权限信息的数量统计
DDL
- DDL Duration 95:DDL 语句处理时间的 95% 分位
- Batch Add Index Duration 100:创建索引时每个 Batch 所花费的最大时间统计
- DDL Waiting Jobs Count:等待的 DDL 任务数量
- DDL META OPM:DDL 每分钟获取 META 的次数
- DDL Worker Duration 99:每个 DDL worker 执行时间 99% 分位
- Deploy Syncer Duration:Schema Version Syncer 初始化,重启,清空等操作耗时
- Owner Handle Syncer Duration:DDL Owner 在执行更新,获取以及检查 Schema Version 的耗时
- Update Self Version Duration:Schema Version Syncer 更新版本信息耗时
- DDL OPM:DDL 语句的每秒执行次数
- DDL add index progress in percentage:添加索引的进度展示
Statistics
- Auto Analyze Duration 95:自动 ANALYZE 耗时统计
- Auto Analyze QPS:自动 ANALYZE 数量统计
- Stats Inaccuracy Rate:统计信息不准确度统计
- Pseudo Estimation OPS:使用假的统计信息优化 SQL 的数量统计
- Dump Feedback OPS:存储统计信息 Feedback 的数量统计
- Store Query Feedback QPS:存储合并查询的 Feedback 信息的每秒操作数量,该操作在 TiDB 内存中进行
- Significant Feedback:重要的 Feedback 更新统计信息的数量统计
- Update Stats OPS:利用 Feedback 更新统计信息的数量统计
- Fast Analyze Status 100:快速收集统计信息的状态统计
Owner
- New ETCD Session Duration 95:创建一个新的 etcd 会话花费的时间。TiDB 通过 etcd client 连接 PD 中的 etcd 保存/读取部分元数据信息。这里记录了创建会话花费的时间
- Owner Watcher OPS:DDL owner watch PD 的 etcd 的元数据的 goroutine 的每秒操作次数
Meta
- AutoID QPS:AutoID 相关操作的数量统计,包括全局 ID 分配、单个 Table AutoID 分配、单个 Table AutoID Rebase 三种操作
- AutoID Duration:AutoID 相关操作的耗时
- Region Cache Error OPS:TiDB 缓存的 region 信息每秒遇到的错误次数
- Meta Operations Duration 99:元数据操作延迟
GC
- Worker Action OPM:GC 相关操作的数量,包括 run_job,resolve_lock,delete_range 等操作
- Duration 99:GC 相关操作的耗时统计
- Config:GC 的数据保存时长(life time)和 GC 运行间隔(run interval)配置
- GC Failure OPM:GC 相关操作失败数量统计
- Delete Range Failure OPM:Delete range 失败的次数
- Too Many Locks Error OPM:GC 清锁过多错误的数量
- Action Result OPM:GC 相关操作结果数量
- Delete Range Task Status:Delete range 的任务状态,包含完成和失败状态
- Push Task Duration 95:将 GC 子任务推送给 GC worker 的耗时
Batch Client
- Pending Request Count by TiKV:等待处理的 Batch 消息数量
- Wait Duration 95:等待处理的 Batch 消息延迟
- Batch Client Unavailable Duration 95:Batch 客户端不可用的时间
- No Available Connection Counter:Batch 客户端找不到可用链接的次数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论