Skip to content

Commit

Permalink
Update configure-store-limit.md
Browse files Browse the repository at this point in the history
  • Loading branch information
hfxsd committed Jan 26, 2025
1 parent dcc852a commit 74c9d25
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions configure-store-limit.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ aliases: ['/docs-cn/dev/configure-store-limit/']

# Store Limit

Store Limit PD 在 3.0 版本引入的特性,旨在能够更加细粒度地控制调度的速度,针对不同调度场景进行调优
Store Limit 是一个 PD 特性,旨在更精细地控制调度速度,以在不同场景下实现更好的性能

## 实现原理

Expand All @@ -28,48 +28,44 @@ Store Limit 是通过在内存中维护了一个 store ID 到令牌桶的映射

Store Limit 与 PD 其他 limit 相关的参数(如 `region-schedule-limit``leader-schedule-limit` 等)不同的是,Store Limit 限制的主要是 operator 的消费速度,而其他的 limit 主要是限制 operator 的产生速度。引入 Store Limit 特性之前,调度的限速主要是全局的,所以即使限制了全局的速度,但还是有可能存在调度都集中在部分 store 上面,因而影响集群的性能。而 Store Limit 通过将限速的粒度进一步细化,可以更好的控制调度的行为。

Store Limit 定义了每分钟操作的最大数量。假设 Store Limit 为每分钟 5 次操作,向集群添加新节点将以每分钟 5 个 Region(`add-peer` 操作)的速度进行。如果需要为 15 个 Region 执行 `add-peer`,则该操作将需要 3 分钟 (15 / 5 = 3),并且如果每个 Region 为 96 MiB,将消耗最高 8 MiB/s ((5 × 96) / 60 = 8)。

## 使用方法

Store Limit 相关的参数可以通过 `pd-ctl` 进行设置。
Store Limit 相关的参数可以通过 [`PD Control`](/pd-control.md) 进行设置。

### 查看当前 store 的 limit 设置

查看当前 store 的 limit 示例如下:

{{< copyable "shell-regular" >}}

```bash
store limit // 显示所有 store 添加和删除 peer 的速度上限。
store limit add-peer // 显示所有 store 添加 peer 的速度上限。
store limit remove-peer // 显示所有 store 删除 peer 的速度上限。
tiup ctl:v<CLUSTER_VERSION> pd store limit // 显示所有 store 添加和删除 peer 的速度上限。
tiup ctl:v<CLUSTER_VERSION> pd store limit add-peer // 显示所有 store 添加 peer 的速度上限。
tiup ctl:v<CLUSTER_VERSION> pd store limit remove-peer // 显示所有 store 删除 peer 的速度上限。
```

### 设置全部 store 的 limit

设置全部 store 的 limit 示例如下:

{{< copyable "shell-regular" >}}

```bash
store limit all 5 // 设置所有 store 添加和删除 peer 的速度上限为每分钟 5 个。
store limit all 5 add-peer // 设置所有 store 添加 peer 的速度上限为每分钟 5 个。
store limit all 5 remove-peer // 设置所有 store 删除 peer 的速度上限为每分钟 5 个。
tiup ctl:v<CLUSTER_VERSION> pd store limit all 5 // 设置所有 store 添加和删除 peer 的速度上限为每分钟 5 个。
tiup ctl:v<CLUSTER_VERSION> pd store limit all 5 add-peer // 设置所有 store 添加 peer 的速度上限为每分钟 5 个。
tiup ctl:v<CLUSTER_VERSION> pd store limit all 5 remove-peer // 设置所有 store 删除 peer 的速度上限为每分钟 5 个。
```

### 设置单个 store 的 limit

设置单个 store 的 limit 示例如下:

{{< copyable "shell-regular" >}}

```bash
store limit 1 5 // 设置 store 1 添加和删除 peer 的速度上限为每分钟 5 个。
store limit 1 5 add-peer // 设置 store 1 添加 peer 的速度上限为每分钟 5 个。
store limit 1 5 remove-peer // 设置 store 1 删除 peer 的速度上限为每分钟 5 个。
tiup ctl:v<CLUSTER_VERSION> pd store limit 1 5 // 设置 store 1 添加和删除 peer 的速度上限为每分钟 5 个。
tiup ctl:v<CLUSTER_VERSION> pd store limit 1 5 add-peer // 设置 store 1 添加 peer 的速度上限为每分钟 5 个。
tiup ctl:v<CLUSTER_VERSION> pd store limit 1 5 remove-peer // 设置 store 1 删除 peer 的速度上限为每分钟 5 个。
```

## Store Limit v2 原理

[`store-limit-version`](/pd-configuration-file.md#store-limit-version-从-v710-版本开始引入) 设置为 `v2` 时,Store Limit v2 生效。在此模式下,Operator 调度限制将根据 TiKV Snapshot 执行情况进行动态调整。当 TiKV 积压的任务较少时,PD 会增加其调度任务。相反,PD 会减少对该节点的调度任务。此时,你无需关注如何设置 `store limit` 以加快调度进度。

在该模式下,TiKV 执行速度成为迁移进度的主要瓶颈。你可以通过 **TiKV Details** > **Snapshot** > **Snapshot Speed** 面板判断当前调度速度是否达到 TiKV 限流设置。通过调整 TiKV Snapshot Limit ([`snap-io-max-bytes-per-sec`](/tikv-configuration-file.md#snap-io-max-bytes-per-sec)) 来增加或减少该节点的调度速度。
在该模式下,TiKV 执行速度成为迁移进度的主要瓶颈。你可以通过 **TiKV Details** > **Snapshot** > **Snapshot Speed** 面板判断当前调度速度是否达到 TiKV 限流设置。通过调整 TiKV Snapshot Limit ([`snap-io-max-bytes-per-sec`](/tikv-configuration-file.md#snap-io-max-bytes-per-sec)) 来增加或减少该节点的调度速度。

0 comments on commit 74c9d25

Please sign in to comment.