关于region-max-size参数的几个疑问

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本

CentOS7.6 3.10.0-1062.4.1.el7.x86_64

  • TiDB 版本

v3.0.5

  • 磁盘型号

ssd

  • 集群节点分布

服务器:4台;

TikV节点:3个;

PD节点:1个;

TIDB节点:1个

  • 数据量 & region 数量 & 副本数

  • 问题描述(我做了什么)

这是我的测试环境,对于TiKV中的参数: region-max-sizeregion-split-size有几个疑问。

目前我的测试环境有3个kv,其中两个kv这两个的配置参数参考官网的TiKV调优文档配置为:

region-max-size = "384MB"
# Region 分裂阈值
region-split-size = "256MB"
#当 Region 写入的数据量超过该阈值的时候,TiKV 会检查该 Region 是否需要分裂。为了减少检查过程
#中扫描数据的成本,数据过程中可以将该值设置为32MB,正常运行状态下使用默认值即可。
region-split-check-diff = "32MB"

重启这两个KV节点后,运行正常,在TiKV日志文件里面也确认了这几个配置参数生效了。

问题是我的另外一个TikV的配置参数使用的是默认配置参数,也就是region-max-size=144,region-split-size=96。这里就有几个疑问了。

  1. region的大小参数以哪个为准?目前我的TiDB运行正常。
  2. 配置这两个参数除了在日志文件里面能确认其生效的值之外还可以在什么地方查看生效的配置值?

最后就是我的生产环境下目前一共有6个kv,每个kv的region高达16万个,raft-cpu的值一般在140%左右,这两个参数为默认配置,merge已经开启。如果我增大这两个参数,region的数量会减少么,对我的kv节点的性能会不会有提高?

  • 关键词】 tikv,region

生产环境 region 多问题,可以看下监控,如果集群压力大,可以调整下 region merge 参数(max-merge-region-keys & max-merge-region-size ),增大这两个参数会减少小 region,另外还可以调整下:[raftstore] -> raft-base-tick-interval = “2s” (配置文件没有的话,手动添加即可)。至于两个 KV 的调优参数建议设置一样。

生产环境下我们已经把max-merge-region-size 调整为80M了,目前region大小的平均值已经去到100M了。

所以就想调整kv的参数,进一步减少region的数量。

比较好奇KV的那两个size调优参数为什么在不同节点不一样的情况下还能正常运行?按照我个人的理解,region的size不应该是由PD去控制的么?为什么这个参数却是在KV上去配置呢?

@zhouyueyue-PingCAP any update?

如果是减少 region 的数量,建议调整 region merge 参数,也就是 max-merge-region-keys & max-merge-region-size ,这两个参数不建议设置的过大,参考官网的200000 和 20M,如果设置的过大,可能会进行完 merge 之后又在 KV 参数设置下进行了 split。KV 上面设置的参数主要是控制 region 过大进行 split。至于两个节点参数设置不一致还能正常运行是符合预期的,单个节点的参数设置只会对该节点的 region 有效,如果有 region 的迁移,会重新按照新节点的参数设置进行一系列的操作。

这两天看到时不时有一些merge timeout的情况,这与 max-merge-region-size=80M这个参数有关么?

想了下如果刚好两个region都是70多M,然后一合并的话,合并的结果又符合split的规则了,是这样理解么?

这种情况,结合所有节点的 tikv.log 看下,看着是 PD 下发的请求被拒掉了,需要根据日志信息确定下原因。