我们集群三个 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分布更均匀
- 预打散Region(推荐):针对 Leader分布不均的单张表或单个索引,可执行
SPLIT TABLE语句手动预分配 Region,避免未来写入压力过度集中。 - 让PD自动均衡(首选):调大
leader-schedule-limit参数,加速 PD 对 Leader 的调度速度,同时检查balance-leader-scheduler是否启用。 - 手动迁移(短期方案):对关键的热点 Leader,使用
pd-ctl手动指定将其迁移至低负载节点(operator add transfer-leader <region_id> <target_store_id>)。
其他可能因素
高I/O或配置差异:检查高负载节点的磁盘I/O是否成为瓶颈;同时对比所有TiKV节点的关键配置(如 block-cache 容量)是否一致。
1 个赞
PD有三种调度器分别处理不同场景。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。