From 5741b07f48770b4010f4d52c10134eae1693234f Mon Sep 17 00:00:00 2001 From: okjiang <819421878@qq.com> Date: Tue, 16 Dec 2025 16:43:34 +0800 Subject: [PATCH 1/4] add doc Signed-off-by: okjiang <819421878@qq.com> --- .../pd-scheduling-best-practices.md | 2 ++ pd-control.md | 21 ++++++++++++++++++- tikv-configuration-file.md | 7 +++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/best-practices/pd-scheduling-best-practices.md b/best-practices/pd-scheduling-best-practices.md index 2b9681d151c0..ca35ff68eec6 100644 --- a/best-practices/pd-scheduling-best-practices.md +++ b/best-practices/pd-scheduling-best-practices.md @@ -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-版本开始引入) 以缓解该情况。 \ No newline at end of file diff --git a/pd-control.md b/pd-control.md index a87acc586f1e..eaca51c9c850 100644 --- a/pd-control.md +++ b/pd-control.md @@ -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 驱逐出去 >> scheduler remove grant-leader-scheduler-1 // 把对应的调度器删掉,`-1` 对应 store ID >> scheduler pause balance-region-scheduler 10 // 暂停运行 balance-region 调度器 10 秒 >> scheduler pause all 10 // 暂停运行所有的调度器 10 秒 @@ -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` + +`evict-slow-store-scheduler` 用于在 TiKV 节点出现磁盘 I/O 或网络抖动时,阻断 PD 向异常节点调度 leader,并在必要时主动驱逐 leader。TiKV 会在 store 心跳中同时上报 `SlowScore`(磁盘)与 `NetworkSlowScore`(网络),分值范围均为 1~100,数值越大代表该节点越可能异常。 + +你可以通过 `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` 来开启。 +当你需要直接关闭 tikv 内部的网络探测时,可将 TiKV 侧 [`raftstore.inspect-network-interval`](/tikv-configuration-file.md#inspect-network-interval) 设置为 `0`。 + ### `scheduler config balance-leader-scheduler` 用于查看和控制 `balance-leader-scheduler` 策略。 diff --git a/tikv-configuration-file.md b/tikv-configuration-file.md index 21882da94e5b..408026c12230 100644 --- a/tikv-configuration-file.md +++ b/tikv-configuration-file.md @@ -1105,6 +1105,13 @@ raftstore 相关的配置项。 + 默认值:100ms + 最小值:1ms +### `inspect-network-interval` + ++ 控制 TiKV HealthChecker 主动向 PD 以及其他 TiKV 节点发起网络探测的周期,用于计算 `NetworkSlowScore` 并向 PD 上报慢节点的网络状态。 ++ 设置为 `0` 表示关闭网络探测。数值越小,采样频率越高,能够更快放大网络抖动,但也会消耗更多网络与 CPU 资源。 ++ 默认值:100ms ++ 取值范围:0 或 `[10ms, +∞)` + ### `raft-write-size-limit` 从 v5.3.0 版本开始引入 + 触发 Raft 数据写入的阈值。当数据大小超过该配置项值,数据会被写入磁盘。当 `store-io-pool-size` 的值为 `0` 时,该配置项不生效。 From 44bfca2475caf0df8951f929f403a2f8f72c400f Mon Sep 17 00:00:00 2001 From: okjiang <819421878@qq.com> Date: Wed, 17 Dec 2025 11:16:17 +0800 Subject: [PATCH 2/4] move place Signed-off-by: okjiang <819421878@qq.com> --- tikv-configuration-file.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tikv-configuration-file.md b/tikv-configuration-file.md index 408026c12230..a648154ca1d9 100644 --- a/tikv-configuration-file.md +++ b/tikv-configuration-file.md @@ -283,6 +283,13 @@ TiKV 配置文件比命令行参数支持更多的选项。你可以在 [etc/con + 设置服务与转发请求的连接池大小。设置过小会影响请求的延迟和负载均衡。 + 默认值:4 +### `inspect-network-interval` 从 v8.5.5 和 v9.0.0 版本开始引入 + ++ 控制 TiKV HealthChecker 主动向 PD 以及其他 TiKV 节点发起网络探测的周期,用于计算 `NetworkSlowScore` 并向 PD 上报慢节点的网络状态。 ++ 设置为 `0` 表示关闭网络探测。数值越小,采样频率越高,能够更快放大网络抖动,但也会消耗更多网络与 CPU 资源。 ++ 默认值:100ms ++ 取值范围:0 或 `[10ms, +∞)` + ## readpool.unified 统一处理读请求的线程池相关的配置项。该线程池自 4.0 版本起取代原有的 storage 和 coprocessor 线程池。 @@ -1105,13 +1112,6 @@ raftstore 相关的配置项。 + 默认值:100ms + 最小值:1ms -### `inspect-network-interval` - -+ 控制 TiKV HealthChecker 主动向 PD 以及其他 TiKV 节点发起网络探测的周期,用于计算 `NetworkSlowScore` 并向 PD 上报慢节点的网络状态。 -+ 设置为 `0` 表示关闭网络探测。数值越小,采样频率越高,能够更快放大网络抖动,但也会消耗更多网络与 CPU 资源。 -+ 默认值:100ms -+ 取值范围:0 或 `[10ms, +∞)` - ### `raft-write-size-limit` 从 v5.3.0 版本开始引入 + 触发 Raft 数据写入的阈值。当数据大小超过该配置项值,数据会被写入磁盘。当 `store-io-pool-size` 的值为 `0` 时,该配置项不生效。 From 5ced6dc2806e88789f9caaf58a68ed63376b4bdf Mon Sep 17 00:00:00 2001 From: okJiang <819421878@qq.com> Date: Wed, 17 Dec 2025 11:18:30 +0800 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- best-practices/pd-scheduling-best-practices.md | 2 +- pd-control.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/best-practices/pd-scheduling-best-practices.md b/best-practices/pd-scheduling-best-practices.md index ca35ff68eec6..e21b6f4c1ac9 100644 --- a/best-practices/pd-scheduling-best-practices.md +++ b/best-practices/pd-scheduling-best-practices.md @@ -299,7 +299,7 @@ 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) 来开启。 +自 v8.5.5 起,TiKV 引入了网络的慢节点检测机制。与磁盘慢节点检测类似,通过在 TiKV 节点之间进行网络探测并计算分数,来判断节点的网络是否出现异常。可以通过 [`enable-network-slow-store`](/pd-control.md#scheduler-config-evict-slow-store-scheduler) 来开启。 > **注意:** > diff --git a/pd-control.md b/pd-control.md index eaca51c9c850..cb3612de2f6e 100644 --- a/pd-control.md +++ b/pd-control.md @@ -1198,7 +1198,7 @@ pd-ctl resource-manager config controller set ltb-max-wait-duration 30m >> scheduler config evict-slow-store-scheduler set recovery-duration 600 ``` -当你需要开启网络的慢节点探测时,可以通过 `scheduler config evict-slow-store-scheduler set enable-network-slow-store true` 来开启。 +要启用网络慢节点探测,你需要同时进行以下配置:首先,通过 `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` From c3069cdc0eb38e7c4ebfcdd068f5dfb9b94de6d3 Mon Sep 17 00:00:00 2001 From: okJiang <819421878@qq.com> Date: Thu, 18 Dec 2025 00:10:28 +0800 Subject: [PATCH 4/4] Update best-practices/pd-scheduling-best-practices.md Co-authored-by: lucasliang --- best-practices/pd-scheduling-best-practices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/best-practices/pd-scheduling-best-practices.md b/best-practices/pd-scheduling-best-practices.md index e21b6f4c1ac9..cee5b9b11ccd 100644 --- a/best-practices/pd-scheduling-best-practices.md +++ b/best-practices/pd-scheduling-best-practices.md @@ -299,7 +299,7 @@ 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) 来开启。 +自 v8.5.5 起,TiKV 引入了网络的慢节点检测机制。与磁盘慢节点检测类似,该机制通过在 TiKV 节点之间进行网络延时探测并计算分数,来判断节点的网络是否出现异常。可以通过 [`enable-network-slow-store`](/pd-control.md#scheduler-config-evict-slow-store-scheduler) 来开启。 > **注意:** >