Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions best-practices/pd-scheduling-best-practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,8 @@ Region Merge 速度慢也很有可能是受到 limit 配置的限制(`merge-sc

自 v5.2.0 起,TiKV 引入了慢节点检测机制。通过对 TiKV 中的请求进行采样,计算出一个范围在 1~100 的分数。当分数大于等于 80 时,该 TiKV 节点会被设置为 slow 状态。可以通过添加 [`evict-slow-store-scheduler`](/pd-control.md#scheduler-show--add--remove--pause--resume--config--describe) 来针对慢节点进行对应的检测和调度。当检测到有且只有一个 TiKV 节点为慢节点,并且该 TiKV 的 slow score 到达限定值(默认 80)时,将节点上的 Leader 驱逐(其作用类似于 `evict-leader-scheduler`)。

自 v8.5.5 起,TiKV 引入了网络的慢节点检测机制。与磁盘慢节点检测类似,该机制通过在 TiKV 节点之间进行网络延时探测并计算分数,来判断节点的网络是否出现异常。可以通过 [`enable-network-slow-store`](/pd-control.md#scheduler-config-evict-slow-store-scheduler) 来开启。

> **注意:**
>
> **Leader 驱逐**是通过 PD 向 TiKV 慢节点发送调度请求,然后 TiKV 按时间顺序执行收到的调度请求来完成的。受 **I/O 慢**或者其他因素的影响,慢节点可能存在请求堆积的情况,使得部分 Leader 需要等待滞后的请求处理完后才能处理 **Leader 驱逐**的请求,造成 **Leader 驱逐**的整体时间过长。因此,在开启 `evict-slow-store-scheduler` 时,建议同步配置[`store-io-pool-size`](/tikv-configuration-file.md#store-io-pool-size-从-v530-版本开始引入) 以缓解该情况。
21 changes: 20 additions & 1 deletion pd-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -1158,7 +1158,7 @@ pd-ctl resource-manager config controller set ltb-max-wait-duration 30m
>> scheduler config evict-leader-scheduler // v4.0.0 起,展示该调度器具体在哪些 store 上
>> scheduler config evict-leader-scheduler add-store 2 // 为 store 2 添加 leader 驱逐调度
>> scheduler config evict-leader-scheduler delete-store 2 // 为 store 2 移除 leader 驱逐调度
>> scheduler add evict-slow-store-scheduler // 当有且仅有一个 slow store 时将该 store 上的所有 Region leader 驱逐出去
>> scheduler add evict-slow-store-scheduler // 自动检测磁盘或网络慢节点,并在满足条件时将该 store 上的所有 Region leader 驱逐出去

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

优化后的描述更准确地说明了调度器的功能,但‘磁盘或网络慢节点’的表述可以更具体,以明确其检测的是磁盘或网络的慢节点。同时,建议将‘满足条件时’具体化,以提升文档的清晰度。

Suggested change
>> scheduler add evict-slow-store-scheduler // 自动检测磁盘或网络慢节点,并在满足条件时将该 store 上的所有 Region leader 驱逐出去
>> scheduler add evict-slow-store-scheduler // 自动检测磁盘慢节点或网络慢节点,并在检测到慢节点时将该 store 上的所有 Region leader 驱逐出去

>> scheduler remove grant-leader-scheduler-1 // 把对应的调度器删掉,`-1` 对应 store ID
>> scheduler pause balance-region-scheduler 10 // 暂停运行 balance-region 调度器 10 秒
>> scheduler pause all 10 // 暂停运行所有的调度器 10 秒
Expand All @@ -1182,6 +1182,25 @@ pd-ctl resource-manager config controller set ltb-max-wait-duration 30m
- `pending`:表示当前调度器无法产生调度。`pending` 状态的调度器,会返回一个概览信息,来帮助用户诊断。概览信息包含了 store 的一些状态信息,解释了它们为什么不能被选中进行调度。
- `normal`:表示当前调度器无需进行调度。

### `scheduler config evict-slow-store-scheduler`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### `scheduler config evict-slow-store-scheduler`
### `scheduler config evict-slow-store-scheduler` <span class="version-mark">从 v8.5.5 和 v9.0.0 版本开始引入</span>

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个不是新引入的,只有里面的 enable-network-slow-store 是新引入的


`evict-slow-store-scheduler` 用于在 TiKV 节点出现磁盘 I/O 或网络抖动时,阻断 PD 向异常节点调度 leader,并在必要时主动驱逐 leader。TiKV 会在 store 心跳中同时上报 `SlowScore`(磁盘)与 `NetworkSlowScore`(网络),分值范围均为 1~100,数值越大代表该节点越可能异常。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

原文对 SlowScoreNetworkSlowScore 的解释不够清晰,容易让用户混淆。建议明确说明这两个分数分别由磁盘和网络探测产生,并说明 PD 如何根据它们做出决策。

Suggested change
`evict-slow-store-scheduler` 用于在 TiKV 节点出现磁盘 I/O 或网络抖动时,阻断 PD 向异常节点调度 leader,并在必要时主动驱逐 leader。TiKV 会在 store 心跳中同时上报 `SlowScore`(磁盘)与 `NetworkSlowScore`网络),分值范围均为 1~100,数值越大代表该节点越可能异常。
`evict-slow-store-scheduler` 用于在 TiKV 节点出现磁盘 I/O 或网络抖动时,阻断 PD 向异常节点调度 leader,并在必要时主动驱逐 leader。TiKV 会在 store 心跳中同时上报 `SlowScore`(磁盘 I/O 探测产生)与 `NetworkSlowScore`网络探测产生),分值范围均为 1~100,数值越大代表该节点越可能异常。PD 会综合这两个分数来判断节点是否为慢节点


你可以通过 `recovery-duration` 来控制慢节点恢复正常的时间。

示例:

```bash
>> scheduler config evict-slow-store-scheduler // 查看当前配置
{
"recovery-duration": "1800" // 30 分钟
}
>> scheduler config evict-slow-store-scheduler set recovery-duration 600
```

要启用网络慢节点探测,你需要同时进行以下配置:首先,通过 `scheduler config evict-slow-store-scheduler set enable-network-slow-store true` 在 PD 侧开启调度器对网络慢节点的处理;其次,确保 TiKV 侧的 [`raftstore.inspect-network-interval`](/tikv-configuration-file.md#inspect-network-interval) 配置项大于 `0` 以启用网络探测。若要直接关闭 TiKV 内部的网络探测,可将该配置项设置为 `0`。
当你需要直接关闭 tikv 内部的网络探测时,可将 TiKV 侧 [`raftstore.inspect-network-interval`](/tikv-configuration-file.md#inspect-network-interval) 设置为 `0`。

### `scheduler config balance-leader-scheduler`

用于查看和控制 `balance-leader-scheduler` 策略。
Expand Down
7 changes: 7 additions & 0 deletions tikv-configuration-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,13 @@ TiKV 配置文件比命令行参数支持更多的选项。你可以在 [etc/con
+ 设置服务与转发请求的连接池大小。设置过小会影响请求的延迟和负载均衡。
+ 默认值:4

### `inspect-network-interval` <span class="version-mark">从 v8.5.5 和 v9.0.0 版本开始引入</span>

+ 控制 TiKV HealthChecker 主动向 PD 以及其他 TiKV 节点发起网络探测的周期,用于计算 `NetworkSlowScore` 并向 PD 上报慢节点的网络状态。
+ 设置为 `0` 表示关闭网络探测。数值越小,采样频率越高,能够更快放大网络抖动,但也会消耗更多网络与 CPU 资源。
+ 默认值:100ms
+ 取值范围:0 或 `[10ms, +∞)`

## readpool.unified

统一处理读请求的线程池相关的配置项。该线程池自 4.0 版本起取代原有的 storage 和 coprocessor 线程池。
Expand Down
Loading