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
4 changes: 3 additions & 1 deletion best-practices/pd-scheduling-best-practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,9 @@ Region Merge 速度慢也很有可能是受到 limit 配置的限制(`merge-sc

实践中,如果能确定这个节点的故障是不可恢复的,可以立即做下线处理,这样 PD 能尽快补齐副本,降低数据丢失的风险。与之相对,如果确定这个节点是能恢复的,但可能半小时之内来不及,则可以把 `max-store-down-time` 临时调整为比较大的值,这样能避免超时之后产生不必要的副本补充,造成资源浪费。

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

> **注意:**
>
Expand Down
40 changes: 39 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 驱逐出去
Copy link
Collaborator

Choose a reason for hiding this comment

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

scheduler add 还是 scheduler config 呢? 后面的配置是 scheduler config

Copy link
Member Author

@okJiang okJiang Jan 4, 2026

Choose a reason for hiding this comment

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

add 和 config 是同级的不同命令

Copy link
Member Author

Choose a reason for hiding this comment

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

add 没有问题

>> 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,44 @@ pd-ctl resource-manager config controller set ltb-max-wait-duration 30m
- `pending`:表示当前调度器无法产生调度。`pending` 状态的调度器,会返回一个概览信息,来帮助用户诊断。概览信息包含了 store 的一些状态信息,解释了它们为什么不能被选中进行调度。
- `normal`:表示当前调度器无需进行调度。

### `scheduler config evict-slow-store-scheduler`

`evict-slow-store-scheduler` 用于在 TiKV 节点出现磁盘 I/O 或网络抖动时,限制 PD 向异常节点调度 Leader,并在必要时主动驱逐 Leader,以降低慢节点对集群的影响。

#### 磁盘慢节点

从 v6.2.0 开始,TiKV 会在 store 心跳中向 PD 上报 `SlowScore`,该分值基于磁盘 I/O 情况计算得出。分值范围为 1~100,数值越大表示该节点越可能存在磁盘性能异常。

对于磁盘慢节点,TiKV 侧的探测以及 PD 侧基于 `evict-slow-store-scheduler` 的调度处理默认开启,无需额外配置。

#### 网络慢节点

从 v8.5.5 和 v9.0.0 起,TiKV 支持在 store 心跳中上报 `NetworkSlowScore`,该分值基于网络探测结果计算得出,用于识别网络抖动导致的慢节点。分值范围为 1~100,数值越大表示网络异常的可能性越高。

出于兼容性和资源消耗的考虑,网络慢节点的探测与调度默认关闭。如需启用,你需要同时完成以下配置:

1. 在 PD 侧开启调度器对网络慢节点的处理:

```bash
scheduler config evict-slow-store-scheduler set enable-network-slow-store true
```

2. 在 TiKV 侧将 [`raftstore.inspect-network-interval`](/tikv-configuration-file.md#inspect-network-interval) 配置项设置为大于 `0` 的值,以启用网络探测。

#### 恢复时间控制

你可以通过 `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 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