Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TiDB Dashboard: Polish v6.0 features #8889

Merged
merged 12 commits into from
Apr 14, 2022
Next Next commit
Unify the document about manual profiling and continuous profiling
Signed-off-by: Wish <breezewish@outlook.com>
  • Loading branch information
breezewish committed Apr 7, 2022
commit 038a7749a4344193c5d2dad09cb85ea13fe0a342
83 changes: 45 additions & 38 deletions dashboard/continuous-profiling.md
Original file line number Diff line number Diff line change
@@ -1,80 +1,87 @@
---
title: TiDB Dashboard 实例性能持续分析页面
summary: TiDB Dashboard 持续性能分析功能 (Continuous Profiling)
title: TiDB Dashboard 实例性能分析 - 持续分析页面
summary: 了解如何持续地收集 TiDB、TiKV、PD 各个实例的性能数据,缩短平均故障恢复时间
---

# TiDB Dashboard 实例性能分析 - 持续分析页面

持续性能分析是 TiDB v5.3.0 引入的一种从系统调用层面解读资源开销的方法。引入该方法后,TiDB 可提供数据库源码级性能观测,通过火焰图的形式帮助研发、运维人员定位性能问题的根因。
> **注意:**
>
> 该功能面向技术专家,建议在 PingCAP 专业技术人员的指导下使用该功能。
breezewish marked this conversation as resolved.
Show resolved Hide resolved
breezewish marked this conversation as resolved.
Show resolved Hide resolved
>
> 你必须使用 TiUP(v1.9.0 及以上版本)或 TiDB Operator(v1.3.0 及以上版本)部署或升级集群,才可以使用该功能。

该功能以低于 0.5% 的性能损耗,对数据库内部运行状态持续打快照(类似 CT 扫描),让原本“黑盒”的数据库变成“白盒”,具备更高的可观测性。该功能一键开启后自动运行,存储结果提供了保留时长的设定,过期的结果将会被回收,确保存储空间的有效利用
持续性能分析功能可以**持续地**收集 TiDB、TiKV、PD 各个实例的性能数据。收集到的性能数据可显示为火焰图或有向无环图形式

## 使用限制
通过这些性能数据,技术专家可以分析实例的 CPU、内存等资源消耗细节,帮助解答诸如某一时刻 CPU 开销较高、内存占用较大、进程不明原因卡死等复杂问题。即使这类问题无法得到复现,技术专家也可以通过查看当时记录下的历史性能数据,还原问题现场,对当时的问题进行细致分析,从而有效缩短平均故障恢复时间。
breezewish marked this conversation as resolved.
Show resolved Hide resolved

使用持续性能分析时,应留意如下使用限制:
## 与手工性能分析的区别
breezewish marked this conversation as resolved.
Show resolved Hide resolved

- 该功能可在 x86 架构下支持 TiDB、TiKV 和 PD;而在 ARM 框架下,该功能还未完全兼容,不可开启。
持续性能分析是[手工性能分析](/dashboard/dashboard-profiling.md)的强化功能,它们都能用于收集和分析各个实例不同维度的性能数据,主要区别如下:
breezewish marked this conversation as resolved.
Show resolved Hide resolved

- 该功能适用于使用 v1.9.0 及以上版本 TiUP 或 v1.3.0 及以上版本 TiDB Operator 部署和升级的集群,不支持二进制包部署和升级的集群。
- 手工性能分析仅在用户发起分析的时刻收集一小段时间(如 30 秒)的性能数据;持续性能分析开启后会持续收集性能数据;
- 手工性能分析只能用于分析集群当前的问题;持续性能分析既可以用于分析集群当前问题,可以分析集群历史问题;
- 手工性能分析允许仅收集特定实例的特定性能数据;持续性能分析会收集所有实例的所有性能数据;
breezewish marked this conversation as resolved.
Show resolved Hide resolved
- 由于持续性能分析存储了更多性能数据,因此会占用更大的磁盘空间;
breezewish marked this conversation as resolved.
Show resolved Hide resolved
- 由于目前频繁进行性能分析会对 TiFlash 产生稳定性影响,因此当前版本中持续性能分析功能不会收集 TiFlash 的性能数据。
breezewish marked this conversation as resolved.
Show resolved Hide resolved

## 分析内容
## 支持的性能数据

持续性能分析允许用户在不重启的情况下持续收集 TiDB、TiKV 和 PD 各个实例的性能数据,并且持久监控节点。收集到的性能数据可显示为火焰图、有向无环图等,直观展现实例在性能收集的时间段内执行的各种内部操作及其比例,方便用户快速了解该实例 CPU 资源消耗细节。目前支持的性能信息
除了 TiFlash CPU 开销情况由于稳定性原因没有收集以外,其他所有[手工性能分析](/dashboard/dashboard-profiling.md#支持的性能数据)中的性能数据都会在该功能中收集
breezewish marked this conversation as resolved.
Show resolved Hide resolved

- TiDB/PD: CPU profile、Heap、Mutex、Goroutine(debug=2)
- TiKV: CPU Profile
- CPU:TiDB、TiKV、PD 实例上各个内部函数的 CPU 开销情况
> ARM 环境中暂不支持对 TiKV 的 CPU 开销情况进行分析。
- Heap:TiDB、PD 实例上各个内部函数的内存占用开销情况
- Mutex:TiDB、PD 实例上各个处于等待状态的 Mutex 情况
- Goroutine:TiDB、PD 实例上各个 Goroutine 的运行状态及调用栈情况

## 启用持续性能分析

本节介绍如何在使用 TiUP 或 TiDB Operator 部署的 TiDB 集群上启用持续性能分析。

### 使用 TiUP 部署的集群

对于使用 TiUP 部署的集群,你可以通过以下步骤启用持续性能分析。
## 访问页面

1. 进入 TiDB Dashboard,选择**高级调试** (Advanced Debugging) > **实例性能分析** (Profiling Instances) > **持续分析** (Continuous Profiling)。
你可以通过以下任一方式访问持续性能分析页面:

2. 点击**打开设置** (Open Settings)。在右侧**设置** (Settings) 页面,将**启用特性** (Enable Feature) 下方的开关打开。设置**保留时间** (Retention Period) 或保留默认值。
- 登录后,左侧导航条点击**高级调试** (Advanced Debugging) > **实例性能分析** (Profiling Instances) > **持续分析** (Continuous Profiling):
breezewish marked this conversation as resolved.
Show resolved Hide resolved

3. 点击**保存** (Save)。
![访问页面](/media/dashboard/dashboard-conprof-access.png)

![启用功能](/media/dashboard/dashboard-conprof-start.png)
- 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/continuous_profiling>(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)。

### 使用 TiDB Operator 部署的集群
## 启用持续性能分析

详见 TiDB Operator 的 [启用持续性能分析](https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/access-dashboard#启用持续性能分析)
持续性能分析默认处于关闭状态。该功能启用后,TiDB Dashboard 会在后台持续收集性能数据,用户无需保持网页处于打开状态。后台收集的性能数据可设置保留时长,超过保留时长的性能数据将会被自动清理。

## 访问页面
你可以通过以下步骤启用该功能:

启用持续性能分析功能后,你可以通过以下任一方式访问实例性能分析页面:
1. 访问持续性能分析页面。
2. 点击**打开设置** (Open Settings)。在右侧**设置** (Settings) 页面,将**启用特性** (Enable Feature) 下方的开关打开。设置**保留时间** (Retention Period) 不做修改使用默认值(3 天)。
breezewish marked this conversation as resolved.
Show resolved Hide resolved
3. 点击**保存** (Save)。

- 登录后,左侧导航条点击**高级调试** (Advanced Debugging) > **实例性能分析** (Profiling Instances) > **持续分析** (Continuous Profiling):
![启用功能](/media/dashboard/dashboard-conprof-start.png)

![访问页面](/media/dashboard/dashboard-conprof-access.png)
## 查看集群当前性能数据

- 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/continuous_profiling>(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)
在已经启用了持续性能分析的集群上,手工性能分析不再可用。若要查看当前时刻集群性能数据,请直接点击页面上最近一次的分析结果进行查看
breezewish marked this conversation as resolved.
Show resolved Hide resolved

## 查看性能分析历史结果
## 查看集群历史性能数据

开始持续性能分析后,可以在列表中看到已经完成的性能分析结果
你可以在列表中看到自启用该功能以来所有自动收集的性能数据

![历史结果](/media/dashboard/dashboard-conprof-history.png)

性能分析在后台运行,刷新或退出当前页面不会终止正在运行的性能分析任务。
## 下载性能数据

## 下载性能分析结果

进入某次分析结果后,可点击右上角下载按钮 (Download Profiling Result) 打包下载所有性能分析结果:
进入某次分析结果后,可点击右上角下载按钮 (Download Profiling Result) 打包下载所有性能数据:

![下载某次分析结果](/media/dashboard/dashboard-conprof-download.png)

也可以点击列表中的单个实例查看其性能分析结果(包括火焰图、有向无环图、文本),或者悬浮在 ... 按钮上下载原始数据:
也可以点击列表中的单个实例查看其性能数据,或者悬浮在 **...** 按钮上下载原始数据:

![查看单个实例分析结果](/media/dashboard/dashboard-conprof-single.png)

## 停用持续性能分析

1. 进入 TiDB Dashboard,选择**高级调试** (Advanced Debugging) > **实例性能分析** (Profiling Instances) > **持续分析** (Continuous Profiling)。
你可以通过以下步骤在持续性能分析页面上停用该功能:

1. 访问持续性能分析页面。
2. 点击**设置** (Settings),将**启用特性** (Enable Feature) 下方的开关关闭。
3. 在弹出的**停用持续分析** (Disable Continuous Profiling Feature) 对话框中,选择**停用** (Disable)。
4. 点击**保存** (Save)。
Expand Down
40 changes: 28 additions & 12 deletions dashboard/dashboard-profiling.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,30 @@
---
title: TiDB Dashboard 实例性能分析页面
title: TiDB Dashboard 实例性能分析 - 手动分析页面
summary: 了解如何收集集群各个实例当前性能数据,从而分析复杂问题
aliases: ['/docs-cn/dev/dashboard/dashboard-profiling/']
---

# TiDB Dashboard 实例性能手动分析页面
# TiDB Dashboard 实例性能分析 - 手动分析页面

该功能允许用户收集 TiDB、TiKV、PD、TiFlash 各个实例的性能数据。收集到的性能数据可显示为火焰图或有向无环图,直观展现实例在性能收集的时间段内执行的各种内部操作及比例,方便用户快速了解该实例 CPU 资源消耗细节。
> **注意:**
>
> 该功能面向技术专家,建议在 PingCAP 专业技术人员的指导下使用该功能。
breezewish marked this conversation as resolved.
Show resolved Hide resolved

## 分析内容
该页面允许用户**按需地**一键收集 TiDB、TiKV、PD、TiFlash 各个实例的当前性能数据。收集到的性能数据可显示为火焰图或有向无环图形式。

性能分析允许用户收集 TiDB、PD、TiKV、TiFlash 各个实例的性能数据。收集到的性能数据可显示为火焰图、有向无环图等,直观展现实例在性能收集的时间段内执行的各种内部操作及其比例,方便用户快速了解该实例性能消耗情况。目前支持的性能信息:
通过这些性能数据,技术专家可以分析实例当前的 CPU、内存等资源消耗细节,帮助解答诸如当前 CPU 开销较高、内存占用较大、进程不明原因卡死等复杂问题。
breezewish marked this conversation as resolved.
Show resolved Hide resolved

- TiDB/PD: CPU profile、Heap、Mutex、Goroutine(debug=2)
- TiKV/TiFlash: CPU Profile
该功能仅在用户点击收集的时刻开始收集一小段时间性能数据,因而只能用于分析集群当前正在面临的问题,对于当前已经不再复现的问题将没有显著效果。若你想要收集或分析过去任意时刻性能数据、不希望每次都人工介入按需分析,请参阅[持续性能分析](/dashboard/continuous-profiling.md)功能。
breezewish marked this conversation as resolved.
Show resolved Hide resolved

## 支持的性能数据

目前支持收集并分析以下性能数据:

- CPU:TiDB、TiKV、PD、TiFlash 实例上各个内部函数的 CPU 开销情况
> ARM 环境中暂不支持对 TiKV 和 TiFlash 的 CPU 开销情况进行分析。
- Heap:TiDB、PD 实例上各个内部函数的内存占用开销情况
- Mutex:TiDB、PD 实例上各个处于等待状态的 Mutex 情况
- Goroutine:TiDB、PD 实例上各个 Goroutine 的运行状态及调用栈情况
breezewish marked this conversation as resolved.
Show resolved Hide resolved

## 访问页面

Expand All @@ -30,6 +42,8 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-profiling/']

![开始分析](/media/dashboard/dashboard-profiling-start.png)

在已经启用了[持续性能分析](/dashboard/continuous-profiling.md)的集群上,手工性能分析不再可用。若要在启用了持续性能分析功能的集群上获取当前时刻的集群性能数据,请直接点击持续性能分析页面上最近一次的分析结果进行查看。
breezewish marked this conversation as resolved.
Show resolved Hide resolved
breezewish marked this conversation as resolved.
Show resolved Hide resolved

## 查看性能分析状态

开始性能分析后,可以看到实时性能分析状态和进度:
Expand All @@ -38,20 +52,22 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-profiling/']

性能分析会在后台运行,刷新或退出当前页面不会终止已经运行的性能分析任务。

## 下载性能分析结果
## 下载性能数据

所有实例的性能分析都完成后,可点击右上角下载按钮 (Download Profiling Result) 打包下载所有性能分析结果
所有实例的性能分析都完成后,可点击右上角下载按钮 (Download Profiling Result) 打包下载所有性能数据

![下载分析结果](/media/dashboard/dashboard-profiling-download.png)

也可以点击列表中的单个实例查看其性能分析结果(包括火焰图、有向无环图、文本),或者悬浮到 ... 按钮上下载原始数据:
也可以点击列表中的单个实例查看其性能数据,或者悬浮到 **...** 按钮上下载原始数据:

![在线查看分析结果](/media/dashboard/dashboard-profiling-view-single.png)

## 查看性能分析历史
## 查看历史性能数据

在性能分析页面下方,列出了性能分析历史。点击任意一行,即可查看其状态详情:
在性能分析页面下方,列出了你手工发起的性能分析历史。点击任意一行,即可查看其状态详情:
breezewish marked this conversation as resolved.
Show resolved Hide resolved

![历史列表](/media/dashboard/dashboard-profiling-history.png)

关于状态详情页的操作,参见[查看性能分析状态](#查看性能分析状态)章节。

若你想要收集或分析过去任意时刻性能数据、不希望每次都人工介入按需分析,请参阅[持续性能分析](/dashboard/continuous-profiling.md)功能。
breezewish marked this conversation as resolved.
Show resolved Hide resolved