tikv has too many regions

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】巡检
【遇到的问题:巡检时发现报tikv has too many regions】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

mysql> select ITEM,SEVERITY,REFERENCE,VALUE,DETAILS from information_schema.INSPECTION_RESULT where ITEM like ‘region-count’;
±-------------±---------±----------±---------±-----------------------------------------------+
| ITEM | SEVERITY | REFERENCE | VALUE | DETAILS |
±-------------±---------±----------±---------±-----------------------------------------------+
| region-count | warning | <= 20000 | 28774.00 | 10.139.111.67:20161 tikv has too many regions |
| region-count | warning | <= 20000 | 28356.00 | 10.139.111.67:20160 tikv has too many regions |
| region-count | warning | <= 20000 | 28096.00 | 10.139.111.103:20163 tikv has too many regions |
| region-count | warning | <= 20000 | 28045.00 | 10.139.111.101:20161 tikv has too many regions |
| region-count | warning | <= 20000 | 28022.00 | 10.139.111.103:20161 tikv has too many regions |
| region-count | warning | <= 20000 | 28015.00 | 10.139.111.103:20162 tikv has too many regions |
| region-count | warning | <= 20000 | 28009.00 | 10.139.111.104:20162 tikv has too many regions |
| region-count | warning | <= 20000 | 27984.00 | 10.139.111.101:20160 tikv has too many regions |
| region-count | warning | <= 20000 | 27981.00 | 10.139.111.102:20163 tikv has too many regions |
| region-count | warning | <= 20000 | 27958.00 | 10.139.111.104:20160 tikv has too many regions |
| region-count | warning | <= 20000 | 27954.00 | 10.139.111.102:20160 tikv has too many regions |
| region-count | warning | <= 20000 | 27940.00 | 10.139.111.104:20163 tikv has too many regions |
| region-count | warning | <= 20000 | 27891.00 | 10.139.111.101:20163 tikv has too many regions |
| region-count | warning | <= 20000 | 27879.00 | 10.139.111.101:20162 tikv has too many regions |
| region-count | warning | <= 20000 | 27865.00 | 10.139.111.104:20161 tikv has too many regions |
| region-count | warning | <= 20000 | 27839.00 | 10.139.111.103:20160 tikv has too many regions |
| region-count | warning | <= 20000 | 27818.00 | 10.139.111.102:20161 tikv has too many regions |
| region-count | warning | <= 20000 | 27655.00 | 10.139.111.102:20162 tikv has too many regions |
| region-count | warning | <= 20000 | 27514.00 | 10.139.111.67:20162 tikv has too many regions |
| region-count | warning | <= 20000 | 27422.00 | 10.139.111.67:20163 tikv has too many regions |
±-------------±---------±----------±---------±-----------------------------------------------+

可以合并 region,或者增加分配给 TikV 的资源

1 个赞

warning可以无视吧

1 个赞

有资源扩容,没资源调监控阈值,但是tidb推荐1个tikv节点不要超过2万个region,超过之后会导致性能下降。

磁盘使用率不足30%,还要增加资源?

官方有确切的指标说明吗

无视也要搞明白为啥?

海量 Region 集群调优最佳实践 | PingCAP 文档中心

“如果 Raftstore 的 CPU 使用率达到了 85% 以上,即可视为达到繁忙状态且成为了瓶颈”

文档说了异常情况,如果region太多可能cpu负载高

如果没发现有问题我认为可以忽略

空region和小region的占比如何查询啊?我看文档里面没有啊

Region 与 RocksDB

虽然 TiKV 将数据按照范围切割成了多个 Region,但是同一个节点的所有 Region 数据仍然是不加区分地存储于同一个 RocksDB 实例上,而用于 Raft 协议复制所需要的日志则存储于另一个 RocksDB 实例。这样设计的原因是因为随机 I/O 的性能远低于顺序 I/O,所以 TiKV 使用同一个 RocksDB 实例来存储这些数据,以便不同 Region 的写入可以合并在一次 I/O 中。

Region 与 Raft 协议

Region 与副本之间通过 Raft 协议来维持数据一致性,任何写请求都只能在 Leader 上写入,并且需要写入多数副本后(默认配置为 3 副本,即所有请求必须至少写入两个副本成功)才会返回客户端写入成功。

TiKV 会尽量保持每个 Region 中保存的数据在一个合适的大小,目前默认是 96 MB,这样更有利于 PD 进行调度决策。当某个 Region 的大小超过一定限制(默认是 144 MiB)后,TiKV 会将它分裂为两个或者更多个 Region。同样,当某个 Region 因为大量的删除请求而变得太小时(默认是 20 MiB),TiKV 会将比较小的两个相邻 Region 合并为一个。

当 PD 需要把某个 Region 的一个副本从一个 TiKV 节点调度到另一个上面时,PD 会先为这个 Raft Group 在目标节点上增加一个 Learner 副本(虽然会复制 Leader 的数据,但是不会计入写请求的多数副本中)。当这个 Learner 副本的进度大致追上 Leader 副本时,Leader 会将它变更为 Follower,之后再移除操作节点的 Follower 副本,这样就完成了 Region 副本的一次调度。

Leader 副本的调度原理也类似,不过需要在目标节点的 Learner 副本变为 Follower 副本后,再执行一次 Leader Transfer,让该 Follower 主动发起一次选举成为新 Leader,之后新 Leader 负责删除旧 Leader 这个副本。

这个我懂,我提问超过2万该如何处理,具体执行命令

我的几个集群也有这个警告,如果不影响集群性能可以忽略,如果想要调整单个tikv中region数量,在7.1版本Region 的大小可以通过 coprocessor.region-split-size 进行设置。推荐的 Region 大小为 96 MiB、128 MiB、256 MiB。region-split-size 越大,性能会越容易发生抖动。不推荐将 Region 大小设置超过 1 GiB,强烈建议不超过 10 GiB。如果你使用了 TiFlash,则 Region 大小不能超过 256 MiB。如果使用 Dumpling 工具,则 Region 大小不能超过 1 GiB。Region 调大以后,使用 Dumpling 工具时,需要降低并发,否则 TiDB 会有 OOM 的风险。

暂时没有性能影响,我怀疑小region 太多,但是有没有可以观察的值,怎么看小region的占比,因为空region 监控有显示,我就想把小region 找出来。

pd-ctl 中直接region 就能看所有region信息 不过需要 jq 格式化 JSON输出查看

region是逻辑概念是连续key空间,大小和key数量是个估计值。region-split-keys 和size是region分裂后新的region尽量保持大大小值,不是硬限制, 这2篇官档看下
https://docs.pingcap.com/zh/tidb/stable/tidb-storage
https://docs.pingcap.com/zh/tidb/stable/tidb-computing

1 个赞

感谢,我先学习一下