Skip to content

Commit

Permalink
add fast tune doc (pingcap#11386)
Browse files Browse the repository at this point in the history
  • Loading branch information
TomShawn authored Sep 23, 2022
1 parent 5087338 commit 4b72655
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 34 deletions.
1 change: 1 addition & 0 deletions experimental-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ aliases: ['/docs-cn/dev/experimental-features-4.0/','/zh/tidb/dev/experimental-f

+ [SQL 诊断](/information-schema/information-schema-sql-diagnostics.md)。(v4.0 实验特性)
+ [集群诊断](/dashboard/dashboard-diagnostics-access.md)。(v4.0 实验特性)
+ [TiKV-FastTune 监控面板](/grafana-tikv-dashboard.md#tikv-fasttune-面板)。(v4.0 实验特性)
82 changes: 48 additions & 34 deletions grafana-tikv-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

目前 Grafana Dashboard 整体分为 PD、TiDB、TiKV、Node\_exporter、Overview、Performance\_overview 等。

对于日常运维,我们通过观察 **TiKV-Details** 面板上的指标,可以了解 TiKV 当前的状态。根据[性能地图](https://asktug.com/_/tidb-performance-map/#/)可以检查集群的状态是否符合预期。
## TiKV-Details 面板

对于日常运维,通过观察 **TiKV-Details** 面板上的指标,可以了解 TiKV 当前的状态。根据[性能地图](https://asktug.com/_/tidb-performance-map/#/)可以检查集群的状态是否符合预期。

以下为 **TiKV-Details** 默认的监控信息:

## Cluster
### Cluster

- Store size:每个 TiKV 实例的使用的存储空间的大小
- Available size:每个 TiKV 实例的可用的存储空间的大小
Expand All @@ -30,7 +32,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Cluster metrics](/media/tikv-dashboard-cluster.png)

## Errors
### Errors

- Critical error:严重错误的数量
- Server is busy:各种会导致 TiKV 实例暂时不可用的事件个数,如 write stall,channel full 等,正常情况下应当为 0
Expand All @@ -45,7 +47,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Errors metrics](/media/tikv-dashboard-errors-v610.png)

## Server
### Server

- CF size:每个列族的大小
- Store size:每个 TiKV 实例的使用的存储空间的大小
Expand All @@ -58,7 +60,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Server metrics](/media/tikv-dashboard-server.png)

## gRPC
### gRPC

- gRPC message count:每种 gRPC 请求的速度
- gRPC message failed:失败的 gRPC 请求的速度
Expand All @@ -67,7 +69,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- gRPC batch size:TiDB 与 TiKV 之间 grpc 请求的 batch 大小
- raft message batch size:TiKV 与 TiKV 之间 raft 消息的 batch 大小

## Thread CPU
### Thread CPU

- Raft store CPU:raftstore 线程的 CPU 使用率,通常应低于 80% * `raftstore.store-pool-size`
- Async apply CPU:async apply 线程的 CPU 使用率,通常应低于 90% * `raftstore.apply-pool-size`
Expand All @@ -80,14 +82,14 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- GC worker CPU:GC worker 线程的 CPU 使用率
- BackGround worker CPU:background worker 线程的 CPU 使用率

## PD
### PD

- PD requests:TiKV 发送给 PD 的请求速度
- PD request duration (average):TiKV 发送给 PD 的请求处理的平均时间
- PD heartbeats:发送给 PD 的心跳的速度
- PD validate peers:TiKV 发送给 PD 用于验证 TiKV 的 peer 有效的消息的速度

## Raft IO
### Raft IO

- Apply log duration:Raft apply 日志所花费的时间
- Apply log duration per server:每个 TiKV 实例上 Raft apply 日志所花费的时间
Expand All @@ -98,7 +100,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Raft IO metrics](/media/tikv-dashboard-raftio.png)

## Raft process
### Raft process

- Ready handled:Raft 中不同 ready 类型的 ops
- count: 批量处理 ready 的 ops
Expand All @@ -114,7 +116,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Raft process metrics](/media/tikv-dashboard-raft-process.png)

## Raft message
### Raft message

- Sent messages per server:每个 TiKV 实例发送 Raft 消息的 ops
- Flush messages per server:每个 TiKV 实例中 raft client 往外 flush Raft 消息的 ops
Expand All @@ -125,7 +127,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Raft message metrics](/media/tikv-dashboard-raft-message.png)

## Raft propose
### Raft propose

- Raft apply proposals per ready:在一个 batch 内,apply proposal 时每个 ready 中包含 proposal 的个数的直方图
- Raft read/write proposals:不同类型的 proposal 的 ops
Expand All @@ -139,7 +141,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Raft propose metrics](/media/tikv-dashboard-raft-propose.png)

## Raft admin
### Raft admin

- Admin proposals:admin proposal 的 ops
- Admin apply:apply 命令的 ops
Expand All @@ -148,19 +150,19 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Raft admin metrics](/media/tikv-dashboard-raft-admin.png)

## Local reader
### Local reader

- Local reader requests:所有请求的总数以及 local read 线程拒绝的请求数量

![TiKV Dashboard - Local reader metrics](/media/tikv-dashboard-local-reader.png)

## Unified Read Pool
### Unified Read Pool

- Time used by level:在 unified read pool 中每个级别使用的时间,级别 0 指小查询
- Level 0 chance:在 unified read pool 中调度的 level 0 任务的比例
- Running tasks:在 unified read pool 中并发运行的任务数量

## Storage
### Storage

- Storage command total:收到不同命令的 ops
- Storage async request error:异步请求出错的 ops
Expand All @@ -169,7 +171,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Storage metrics](/media/tikv-dashboard-storage.png)

## Scheduler
### Scheduler

- Scheduler stage total:每种命令不同阶段的 ops,正常情况下,不会在短时间内出现大量的错误
- Scheduler writing bytes:每个 TiKV 实例正在处理的命令的写入字节数量
Expand All @@ -178,7 +180,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Scheduler metrics](/media/tikv-dashboard-scheduler.png)

## Scheduler - commit
### Scheduler - commit

- Scheduler stage total:commit 中每个命令所处不同阶段的 ops,正常情况下,不会在短时间内出现大量的错误
- Scheduler command duration:执行 commit 命令所需花费的时间,正常情况下,应该小于 1s
Expand All @@ -192,7 +194,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon

![TiKV Dashboard - Scheduler commit metrics](/media/tikv-dashboard-scheduler-commit.png)

## Scheduler - pessimistic_rollback
### Scheduler - pessimistic_rollback

- Scheduler stage total:pessimistic_rollback 中每个命令所处不同阶段的 ops,正常情况下,不会在短时间内出现大量的错误
- Scheduler command duration:执行 pessimistic_rollback 命令所需花费的时间,正常情况下,应该小于 1s
Expand All @@ -204,7 +206,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Scheduler scan details [write]:执行 pessimistic_rollback 命令时,扫描每个 write CF 中 key 的详细情况
- Scheduler scan details [default]:执行 pessimistic_rollback 命令时,扫描每个 default CF 中 key 的详细情况

## Scheduler - prewrite
### Scheduler - prewrite

- Scheduler stage total:prewrite 中每个命令所处不同阶段的 ops,正常情况下,不会在短时间内出现大量的错误
- Scheduler command duration:执行 prewrite 命令所需花费的时间,正常情况下,应该小于 1s
Expand All @@ -216,7 +218,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Scheduler scan details [write]:执行 prewrite 命令时,扫描每个 write CF 中 key 的详细情况
- Scheduler scan details [default]:执行 prewrite 命令时,扫描每个 default CF 中 key 的详细情况

## Scheduler - rollback
### Scheduler - rollback

- Scheduler stage total:rollback 中每个命令所处不同阶段的 ops,正常情况下,不会在短时间内出现大量的错误
- Scheduler command duration:执行 rollback 命令所需花费的时间,正常情况下,应该小于 1s
Expand All @@ -228,7 +230,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Scheduler scan details [write]:执行 rollback 命令时,扫描每个 write CF 中 key 的详细情况
- Scheduler scan details [default]:执行 rollback 命令时,扫描每个 default CF 中 key 的详细情况

## GC
### GC

- GC tasks:由 gc_worker 处理的 GC 任务的个数
- GC tasks Duration:执行 GC 任务时所花费的时间
Expand All @@ -243,22 +245,22 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- GC interval:TiDB 设置的 GC 间隔
- GC in Compaction Filter:write CF 的 Compaction Filter 中已过滤版本的数量

## Snapshot
### Snapshot

- Rate snapshot message:发送 Raft snapshot 消息的速率
- 99% Handle snapshot duration:99% 的情况下,处理 snapshot 所需花费的时间
- Snapshot state count:不同状态的 snapshot 的个数
- 99.99% Snapshot size:99.99% 的 snapshot 的大小
- 99.99% Snapshot KV count:99.99% 的 snapshot 包含的 key 的个数

## Task
### Task

- Worker handled tasks:worker 每秒钟处理的任务的数量
- Worker pending tasks:当前 worker 中,每秒钟 pending 和 running 的任务的数量,正常情况下,应该小于 1000
- FuturePool handled tasks:future pool 每秒钟处理的任务的数量
- FuturePool pending tasks:当前 future pool 中,每秒钟 pending 和 running 的任务的数量

## Coprocessor Overview
### Coprocessor Overview

- Request duration:从收到 coprocessor 请求到处理结束所消耗的总时间
- Total Requests:每种类型的总请求的 ops
Expand All @@ -269,7 +271,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Total RocksDB Perf Statistics:RocksDB 性能统计数据
- Total Response Size:coprocessor 回应的数据大小

## Coprocessor Detail
### Coprocessor Detail

- Handle duration:每秒钟实际处理 coprocessor 请求所消耗的时间的直方图
- 95% Handle duration by store:每秒钟中 95% 的情况下,每个 TiKV 实例处理 coprocessor 请求所花费的时间
Expand All @@ -282,14 +284,14 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Total Ops Details by CF (Table Scan):coprocessor 中对于每个 CF 请求为 select 的 scan 过程中每秒钟各种事件发生的次数
- Total Ops Details by CF (Index Scan):coprocessor 中对于每个 CF 请求为 index 的 scan 过程中每秒钟各种事件发生的次数

## Threads
### Threads

- Threads state:TiKV 线程的状态
- Threads IO:TiKV 各个线程的 I/O 流量
- Thread Voluntary Context Switches:TiKV 线程自主切换的次数
- Thread Nonvoluntary Context Switches:TiKV 线程被动切换的次数

## RocksDB - kv/raft
### RocksDB - kv/raft

- Get operations:get 操作的 ops
- Get duration:get 操作的耗时
Expand Down Expand Up @@ -326,7 +328,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Ingest SST duration seconds:ingest SST 所花费的时间
- Stall conditions changed of each CF:每个 CF stall 的原因

## Titan - All
### Titan - All

- Blob file count:Titan blob 文件的数量
- Blob file size:Titan blob 文件总大小
Expand Down Expand Up @@ -356,7 +358,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Blob GC output file size:Titan GC 输出文件的大小
- Blob GC file count:Titan GC 涉及的 blob 文件数量

## Pessimistic Locking
### Pessimistic Locking

- Lock Manager Thread CPU:lock manager 的线程 CPU 使用率
- Lock Manager Handled tasks:lock manager 处理的任务数量
Expand All @@ -368,11 +370,11 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Total pessimistic locks memory size:内存悲观锁占用内存的总大小
- In-memory pessimistic locking result:将悲观锁仅保存到内存的结果,其中 full 表示因为超过内存限制而无法将悲观锁保存至内存的次数

## Memory
### Memory

- Allocator Stats:内存分配器的统计信息

## Backup
### Backup

- Backup CPU:backup 的线程 CPU 使用率
- Range Size:backup range 的大小直方图
Expand All @@ -382,7 +384,7 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Backup Range Duration:backup range 的耗时
- Backup Errors:backup 中发生的错误数量

## Encryption
### Encryption

- Encryption data keys:正在使用的加密 data key 的总数量
- Encrypted files:被加密的文件数量
Expand All @@ -391,9 +393,9 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- Encrypt/decrypt data nanos:每次加密/解密数据的耗时的直方图
- Read/write encryption meta duration:每秒钟读写加密文件所耗费的时间

## 面板常见参数的解释
### 面板常见参数的解释

### gRPC 消息类型
#### gRPC 消息类型

1. 使用事务型接口的命令:

Expand Down Expand Up @@ -424,3 +426,15 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon
- raw_delete:删除一个 key/value 对
- raw_batch_delete:删除一批 key/value 对
- raw_delete_range:删除连续的一段区间

## TiKV-FastTune 面板

当 TiKV 出现 QPS 抖动、延迟抖动、延迟增加趋势等性能问题时,你可以查看 **TiKV-FastTune** 面板。**TiKV-FastTune** 包括多组子面板,可帮助你诊断性能问题,尤其适用于集群中写入负载较大的场景。

当出现写入相关的性能问题时,可以先在 Grafana 中查看 TiDB 相关的面板。如果问题出在存储端,打开 **TiKV-FastTune** 面板,浏览并检查上面的每个指标。

**TiKV-FastTune** 的面板中,指标标题描述了性能问题的可能成因。要验证成因是否正确,你需要检查具体的图表曲线。

左边 Y 轴表示存储端的 write-RPC QPS,右边 Y 轴上的一组图是倒置绘制的。如果左边 Y 轴的曲线形状与右边的形状匹配,则指标标题描述的问题成因是正确的。

有关该面板的具体监控项以及解释,参考 [TiKV-FastTune 用户手册(英文)](https://docs.google.com/presentation/d/1aeBF2VCKf7eo4-3TMyP7oPzFWIih6UBA53UI8YQASCQ/edit#slide=id.gab6b984c2a_1_352)

0 comments on commit 4b72655

Please sign in to comment.