Skip to content

Commit

Permalink
resource-control: add dashboard panel (#13907)
Browse files Browse the repository at this point in the history
  • Loading branch information
HuSharp authored May 24, 2023
1 parent 2d52c9d commit 5fd68ed
Show file tree
Hide file tree
Showing 16 changed files with 104 additions and 25 deletions.
1 change: 1 addition & 0 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -958,6 +958,7 @@
- [使用示例](/dashboard/dashboard-diagnostics-usage.md)
- [监控指标页面](/dashboard/dashboard-monitoring.md)
- [日志搜索页面](/dashboard/dashboard-log-search.md)
- [资源管控页面](/dashboard/dashboard-resource-manager.md)
- 实例性能分析
- [手动分析页面](/dashboard/dashboard-profiling.md)
- [持续分析页面](/dashboard/continuous-profiling.md)
Expand Down
2 changes: 1 addition & 1 deletion dashboard/continuous-profiling.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ summary: 了解如何持续地收集 TiDB、TiKV、PD 各个实例的性能数

你可以通过以下任一方式访问持续性能分析页面:

- 登录后,在左侧导航栏中点击**高级调试** (Advanced Debugging) > **实例性能分析** (Profiling Instances) > **持续分析** (Continuous Profiling)。
- 登录 TiDB Dashboard 后,在左侧导航栏中点击**高级调试** (Advanced Debugging) > **实例性能分析** (Profiling Instances) > **持续分析** (Continuous Profiling)。

![访问页面](/media/dashboard/dashboard-conprof-access.png)

Expand Down
6 changes: 2 additions & 4 deletions dashboard/dashboard-cluster-info.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-cluster-info/']

可以通过以下两种方法访问集群信息页面:

- 登录后,左侧导航条点击**集群信息** (Cluster Info)
* 登录 TiDB Dashboard 后,在左侧导航栏中点击**集群信息** (Cluster Info)

![访问](/media/dashboard/dashboard-cluster-info-access-v650.png)

- 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/cluster_info/instance>(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)。
* 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/cluster_info/instance>(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)。

## 实例列表

Expand Down
4 changes: 2 additions & 2 deletions dashboard/dashboard-diagnostics-access.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-diagnostics-access/']

可以通过以下两种方法访问集群诊断页面:

* 登录后,左侧导航条点击**集群诊断** (Cluster Diagnostics)
* 登录 TiDB Dashboard 后,在左侧导航栏中点击**集群诊断** (Cluster Diagnostics)

![访问](/media/dashboard/dashboard-diagnostics-access-v650.png)

* 在浏览器中访问 [http://127.0.0.1:2379/dashboard/#/diagnose](http://127.0.0.1:2379/dashboard/#/diagnose)(将 `127.0.0.1:2379` 替换为任意实际 PD 地址和端口)。
* 在浏览器中访问 [http://127.0.0.1:2379/dashboard/#/diagnose](http://127.0.0.1:2379/dashboard/#/diagnose)(将 `127.0.0.1:2379` 替换为你的实际 PD 地址和端口)。

## 生成诊断报告

Expand Down
6 changes: 6 additions & 0 deletions dashboard/dashboard-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ TiDB Dashboard 在 GitHub 上[开源](https://github.com/pingcap-incubator/tidb-

参阅[日志搜索页面](/dashboard/dashboard-log-search.md)了解详情。

## 预估资源管控容量

为使用[资源管控 (Resource Control)](/tidb-resource-control.md) 特性实现资源隔离,集群管理员可以定义资源组 (Resource Group),通过资源组限定配额。

在进行资源规划之前,你需要了解集群的整体容量。参阅[资源管控页面](/dashboard/dashboard-resource-manager.md)了解详情。

## 收集分析各个组件的性能数据

高级调试功能:无需第三方工具,在线地对各个组件进行性能分析,剖析组件实例在分析时间段内执行的各种内部操作及比例。
Expand Down
2 changes: 1 addition & 1 deletion dashboard/dashboard-profiling.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-profiling/']

可以通过以下两种方法访问实例性能分析页面:

- 登录后,左侧导航条点击**高级调试** (Advanced Debugging) > **实例性能分析** (Profile Instances) > **手动分析** (Manual Profiling):
- 登录 TiDB Dashboard 后,在左侧导航栏中点击**高级调试** (Advanced Debugging) > **实例性能分析** (Profile Instances) > **手动分析** (Manual Profiling):

![访问页面](/media/dashboard/dashboard-profiling-access.png)

Expand Down
76 changes: 76 additions & 0 deletions dashboard/dashboard-resource-manager.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
title: TiDB Dashboard 资源管控页面
summary: 介绍如何使用 TiDB Dashboard 的资源管控页面查看资源管控相关信息,以便预估集群容量,更好地进行资源配置。
---

# TiDB Dashboard 资源管控页面

为使用[资源管控 (Resource Control)](/tidb-resource-control.md) 特性实现资源隔离,集群管理员可以定义资源组 (Resource Group),通过资源组限定配额。在进行资源规划之前,你需要了解集群的整体容量。该页面可以帮助你查看资源管控相关信息,以便预估集群容量,更好地进行资源配置。

## 访问方式

可以通过以下两种方法访问资源管控页面:

* 登录 TiDB Dashboard 后,在左侧导航栏中点击**资源管控** (Resource Manager)。

* 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/resource_manager>(将 `127.0.0.1:2379` 替换为你的实际 PD 地址和端口)。

## 资源管控详情

资源管控详情页面如下图所示:

![TiDB Dashboard: Resource Manager](/media/dashboard/dashboard-resource-manager-info.png)

资源管控详情页包含以下三个部分:

- 配置 (Configuration):数据来自于 TiDB 的 `RESOURCE_GROUPS` 表中所有资源组的信息。参见 [`RESOURCE_GROUPS`](/information-schema/information-schema-resource-groups.md) 文档。

- 容量估算 (Estimate Capacity):在进行资源规划之前,你需要了解集群的整体容量。目前提供两种估算方式:

- [基于硬件部署估算容量](/sql-statements/sql-statement-calibrate-resource.md#基于硬件部署估算容量)
- [根据实际负载估算容量](/sql-statements/sql-statement-calibrate-resource.md#根据实际负载估算容量)

- 监控指标 (Metrics):通过观察面板上的指标,可以了解当前集群整体的资源消耗状态。

## 容量估算

在进行资源规划之前,你需要了解集群的整体容量。目前提供两种估算方式预估当前集群的 [Request Unit (RU)](/tidb-resource-control.md#什么是-request-unit-ru#什么是-request-unit-ru) 的容量:

- [基于硬件部署估算容量](/sql-statements/sql-statement-calibrate-resource.md#基于硬件部署估算容量) (Calibrate by Hardware)

目前提供了以下负载类型供选择:

- `tpcc`:数据写入较重的负载,根据类似 `TPC-C` 的负载模型预测。
- `oltp_write_only`:数据写入较重的负载,根据类似 `sysbench oltp_write_only` 的负载模型预测。
- `oltp_read_write`:数据读写平衡的负载,根据类似 `sysbench oltp_read_write` 的负载模型预测。
- `oltp_read_only`:数据读取较重的负载,根据类似 `sysbench oltp_read_only` 的负载模型预测。

![基于硬件部署估算容量](/media/dashboard/dashboard-resource-manager-calibrate-by-hardware.png)

用户资源分组总请求单元 (Total RU of user resource groups) 表示当前除 `default` 用户外的 RU 总量。当该数值小于容量估算值时,系统会发出提醒。系统预定义的 `default` 资源组默认拥有无限用量。当所有用户都属于 `default` 资源组时,资源分配方式与关闭资源管控时相同。

- [根据实际负载估算容量](/sql-statements/sql-statement-calibrate-resource.md#根据实际负载估算容量) (Calibrate by Workload)

![根据实际负载估算容量](/media/dashboard/dashboard-resource-manager-calibrate-by-workload.png)

可以选择 10 分钟至 24 小时的时间范围进行预估。时区与前端用户所处时区相同。

- 如果时间窗口范围不满足 10 分钟至 24 小时的条件,会报错 `Error 1105 (HY000): the duration of calibration is too short, which could lead to inaccurate output. Please make the duration between 10m0s and 24h0m0s`

- 如果时间窗口范围内的负载过低,会报错 `Error 1105 (HY000): The workload in selected time window is too low, with which TiDB is unable to reach a capacity estimation; please select another time window with higher workload, or calibrate resource by hardware instead`

可以通过[监控指标](#监控指标)中的 **CPU Usage** 选择合适的时间范围。

## 监控指标

通过观察面板上的指标,可以了解当前集群整体的资源消耗状态。监控指标及其含义如下:

- Total RU Consumed:实时统计的 Request Unit 总消耗量
- RU Consumed by Resource Groups:以资源组为单位进行实时统计的 Request Unit 消耗数量
- TiDB
- CPU Quota:TiDB 最大 CPU 占用率
- CPU Usage:所有 TiDB 实例 CPU 占用率
- TiKV
- CPU Quota:TiKV 最大 CPU 占用率
- CPU Usage:所有 TiKV 实例 CPU 占用率
- IO MBps:所有 TiKV 实例的 I/O 吞吐量
6 changes: 2 additions & 4 deletions dashboard/dashboard-slow-query.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,9 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-slow-query/']

可以通过以下两种方法访问慢查询页面:

* 登录后,左侧导航条点击**慢查询** (**Slow Queries**):
* 登录 TiDB Dashboard 后,在左侧导航栏中点击**慢查询** (Slow Queries)。

![access 访问页面](/media/dashboard/dashboard-slow-queries-access-v620.png)

* 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/slow_query>(将 `127.0.0.1:2379` 替换为任意实际 PD 地址和端口)。
* 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/slow_query>(将 `127.0.0.1:2379` 替换为你的实际 PD 地址和端口)。

慢查询页面所展示的所有数据都来自于 TiDB 慢查询系统表及慢查询日志,参见[慢查询日志](/identify-slow-queries.md)文档了解详细情况。

Expand Down
6 changes: 2 additions & 4 deletions dashboard/dashboard-statement-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,9 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-statement-list/']

可以通过以下两种方法访问 SQL 语句分析页面:

- 登录后,左侧导航条点击 "**SQL 语句分析**" (SQL Statements)。
* 登录 TiDB Dashboard 后,在左侧导航栏中点击**SQL 语句分析** (SQL Statements)。

![访问](/media/dashboard/dashboard-statement-access.png)

- 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/statement>(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)。
* 在浏览器中访问 <http://127.0.0.1:2379/dashboard/#/statement>(将 `127.0.0.1:2379` 替换为实际 PD 实例地址和端口)。

SQL 语句分析页面所展示的所有数据都来自于 TiDB Statement 系统表,参见 [Statement Summary Tables](/statement-summary-tables.md) 文档了解该系统表的详细情况。

Expand Down
2 changes: 1 addition & 1 deletion dashboard/top-sql.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Top SQL 不能用于解答与性能无关的问题,例如数据正确性或异

你可以通过以下任一方式访问 Top SQL 页面:

- 登录 TiDB Dashboard 后,在左侧导航栏中点击**Top SQL**
- 登录 TiDB Dashboard 后,在左侧导航栏中点击**Top SQL**

![Top SQL](/media/dashboard/top-sql-access.png)

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion releases/release-7.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ TiDB 版本:7.0.0

TiDB 优化了基于资源组的资源管控特性。该特性将会极大地提升 TiDB 集群的资源利用效率和性能表现。资源管控特性的引入对 TiDB 具有里程碑的意义,你可以将一个分布式数据库集群划分成多个逻辑单元,将不同的数据库用户映射到对应的资源组中,并根据需要设置每个资源组的配额。当集群资源紧张时,来自同一个资源组的会话所使用的全部资源将被限制在配额内,避免其中一个资源组过度消耗,从而影响其他资源组中的会话正常运行。

该特性也可以将多个来自不同系统的中小型应用合入一个 TiDB 集群中,个别应用的负载提升,不会影响其他应用的正常运行。而在系统负载较低的时候,繁忙的应用即使超过设定的读写配额,也仍然可以被分配到所需的系统资源,达到资源的最大化利用。此外,合理利用资源管控特性可以减少集群数量,降低运维难度及管理成本。
该特性也可以将多个来自不同系统的中小型应用合入一个 TiDB 集群中,个别应用的负载提升,不会影响其他应用的正常运行。而在系统负载较低的时候,繁忙的应用即使超过设定的配额,也仍然可以被分配到所需的系统资源,达到资源的最大化利用。此外,合理利用资源管控特性可以减少集群数量,降低运维难度及管理成本。

该特性不仅提供了 Grafana 内置的 Resource Control Dashboard 展示资源的实际使用情况,协助你更合理地配置资源,还支持基于会话和语句级别(Hint)的动态资源管控能力。这些功能的引入将帮助你更精确地掌控 TiDB 集群的资源使用情况,并根据实际需要动态调整配额。

Expand Down
2 changes: 1 addition & 1 deletion releases/release-7.1.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ TiDB 版本:7.1.0 (upcoming)

TiDB 持续增强资源管控能力,在 v7.1.0 该功能正式 GA。该特性将极大地提升 TiDB 集群的资源利用率和性能表现。资源管控特性的引入对 TiDB 具有里程碑的意义,你可以将一个分布式数据库集群划分成多个逻辑单元,将不同的数据库用户映射到对应的资源组中,并根据实际需求设置每个资源组的配额。当集群资源紧张时,同一资源组内的会话所使用的全部资源将受到配额限制,防止某一资源组的过度消耗对其他资源组的会话造成影响。

该特性也可以将多个来自不同系统的中小型应用整合到同一个 TiDB 集群中。即使某个应用的负载增加,也不会影响其他应用的正常运行。而在系统负载较低的时候,繁忙的应用即使超出设定的读写配额,仍可获得所需系统资源,实现资源的最大化利用。此外,合理利用资源管控特性可以减少集群数量,降低运维难度及管理成本。
该特性也可以将多个来自不同系统的中小型应用整合到同一个 TiDB 集群中。即使某个应用的负载增加,也不会影响其他应用的正常运行。而在系统负载较低的时候,繁忙的应用即使超出设定的配额,仍可获得所需系统资源,实现资源的最大化利用。此外,合理利用资源管控特性可以减少集群数量,降低运维难度及管理成本。

在 TiDB v7.1.0 中,该特性增加了基于实际负载和硬件部署来估算系统容量上限的能力,为你进行容量规划提供更准确的参考。这有助于你更好地管理 TiDB 的资源分配,从而满足企业级场景的稳定性需求。

Expand Down
14 changes: 8 additions & 6 deletions tidb-resource-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ summary: 介绍如何通过资源管控能力来实现对应用资源消耗的

# 使用资源管控 (Resource Control) 实现资源隔离

使用资源管控特性,集群管理员可以定义资源组 (Resource Group),通过资源组限定读写的配额
使用资源管控特性,集群管理员可以定义资源组 (Resource Group),通过资源组限定配额

TiDB 资源管控特性提供了两层资源管理能力,包括在 TiDB 层的流控能力和 TiKV 层的优先级调度的能力。两个能力可以单独或者同时开启,详情请参见[参数组合效果表](#相关参数)。将用户绑定到某个资源组后,TiDB 层会根据用户所绑定资源组设定的读写配额对用户的读写请求做流控,TiKV 层会根据读写配额映射的优先级来对请求做调度。通过流控和调度这两层控制,可以实现应用的资源隔离,满足服务质量 (QoS) 要求。
TiDB 资源管控特性提供了两层资源管理能力,包括在 TiDB 层的流控能力和 TiKV 层的优先级调度的能力。两个能力可以单独或者同时开启,详情请参见[参数组合效果表](#相关参数)。将用户绑定到某个资源组后,TiDB 层会根据用户所绑定资源组设定的配额对用户的读写请求做流控,TiKV 层会根据配额映射的优先级来对请求做调度。通过流控和调度这两层控制,可以实现应用的资源隔离,满足服务质量 (QoS) 要求。

- TiDB 流控:TiDB 流控使用[令牌桶算法](https://en.wikipedia.org/wiki/Token_bucket) 做流控。如果桶内令牌数不够,而且资源组没有指定 `BURSTABLE` 特性,属于该资源组的请求会等待令牌桶回填令牌并重试,重试可能会超时失败。
- TiKV 调度:你可以为资源组设置绝对优先级 ([`PRIORITY`](/information-schema/information-schema-resource-groups.md#示例)),不同的资源按照 `PRIORITY` 的设置进行调度,`PRIORITY` 高的任务会被优先调度。如果没有设置绝对优先级 (`PRIORITY`),TiKV 会将资源组的 `RU_PER_SEC` 取值映射成各自资源组读写请求的优先级,并基于各自的优先级在存储层使用优先级队列调度处理请求。
Expand Down Expand Up @@ -75,15 +75,15 @@ Request Unit (RU) 是 TiDB 对 CPU、IO 等系统资源的统一抽象的单位,
- [根据实际负载估算容量](/sql-statements/sql-statement-calibrate-resource.md#根据实际负载估算容量)
- [基于硬件部署估算容量](/sql-statements/sql-statement-calibrate-resource.md#基于硬件部署估算容量)

详情请参考 [`CALIBRATE RESOURCE` 预估方式](/sql-statements/sql-statement-calibrate-resource.md#预估方式)
可通过 [TiDB Dashboard 资源管控页面](/dashboard/dashboard-resource-manager.md)进行查看。详情请参考 [`CALIBRATE RESOURCE` 预估方式](/sql-statements/sql-statement-calibrate-resource.md#预估方式)

### 管理资源组

创建、修改、删除资源组,需要拥有 `SUPER` 或者 `RESOURCE_GROUP_ADMIN` 权限。

你可以通过 [`CREATE RESOURCE GROUP`](/sql-statements/sql-statement-create-resource-group.md) 在集群中创建资源组。

对于已有的资源组,可以通过 [`ALTER RESOURCE GROUP`](/sql-statements/sql-statement-alter-resource-group.md) 修改资源组的读写配额,对资源组的配额修改会立即生效。
对于已有的资源组,可以通过 [`ALTER RESOURCE GROUP`](/sql-statements/sql-statement-alter-resource-group.md) 修改资源组的配额,对资源组的配额修改会立即生效。

可以使用 [`DROP RESOURCE GROUP`](/sql-statements/sql-statement-drop-resource-group.md) 删除资源组。

Expand Down Expand Up @@ -172,9 +172,11 @@ SELECT /*+ RESOURCE_GROUP(rg1) */ * FROM t limit 10;

## 监控与图表

TiDB 会定时采集资源管控的运行时信息,并在 Grafana 的 **Resource Control Dashboard** 中提供了相关指标的可视化图表。指标详情参见 [Resource Control 监控指标详解](/grafana-resource-control-dashboard.md)
TiDB 会定时采集资源管控的运行时信息,并在 Grafana 的 **Resource Control Dashboard** 中提供了相关指标的可视化图表,详见 [Resource Control 监控指标详解](/grafana-resource-control-dashboard.md)。

TiKV 中也记录了来自于不同资源组的请求 QPS,详见 [TiKV监控指标详解](/grafana-tikv-dashboard.md#grpc)
TiKV 中也记录了来自于不同资源组的请求 QPS,详见 [TiKV 监控指标详解](/grafana-tikv-dashboard.md#grpc)。

TiDB Dashboard 中可以查看当前 [`RESOURCE_GROUPS`](/information-schema/information-schema-resource-groups.md) 表中资源组的数据。详见 [TiDB Dashboard 资源管控页面](/dashboard/dashboard-resource-manager.md)。

## 工具兼容性

Expand Down

0 comments on commit 5fd68ed

Please sign in to comment.