我们集群三个 TiKV 节点,其中一个 CPU 经常比其他两个高一倍,看监控也没发现明显热点,这是咋回事?难道是 Raft Leader 都集中到那台上了?怎么让 Leader 均匀分布?

我们集群三个 TiKV 节点,其中一个 CPU 经常比其他两个高一倍,看监控也没发现明显热点,这是咋回事?难道是 Raft Leader 都集中到那台上了?怎么让 Leader 均匀分布?

1 个赞

除了Raft Leader分布不均,确实还有其他常见原因。可以先按下面几步快速排查下:

核心排查步骤
第一步:确认Leader分布:用 pd-ctl 查看。命令:tiup ctl:pd store,重点关注 leader_count。如果某节点数量明显偏高,基本可以定位。
第二步:检查是否有热点:通过 TiDB Dashboard 的热力图或查询 INFORMATION_SCHEMA.TIDB_HOT_REGIONS 表,确认是否有少量 Region 承载了绝大部分读写请求。

第三步:分析SQL负载:通过 Dashboard 的 TopSQL 功能或慢查询日志,锁定占用CPU资源最高的SQL,这能帮你判断压力来自业务逻辑还是调度。

让Leader分布更均匀

  1. 预打散Region(推荐):针对 Leader分布不均的单张表或单个索引,可执行 SPLIT TABLE 语句手动预分配 Region,避免未来写入压力过度集中。
  2. 让PD自动均衡(首选):调大 leader-schedule-limit 参数,加速 PD 对 Leader 的调度速度,同时检查 balance-leader-scheduler 是否启用。
  3. 手动迁移(短期方案):对关键的热点 Leader,使用 pd-ctl 手动指定将其迁移至低负载节点(operator add transfer-leader <region_id> <target_store_id>)。

其他可能因素
高I/O或配置差异:检查高负载节点的磁盘I/O是否成为瓶颈;同时对比所有TiKV节点的关键配置(如 block-cache 容量)是否一致。

1 个赞

PD有三种调度器分别处理不同场景。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。