有大量Empty region,且kv数据分布不均匀

【 TiDB 使用环境】
线上环境
【 TiDB 版本】
v4.0.12
【遇到的问题】
日常运维过程中,发现个别KV节点的磁盘使用率超高,监控中出现大量的Empty region,
根据文档和以往的帖子操作了 Store Limit、enable-cross-table-merge、max-merge-region-keys、max-merge-region-size、region-schedule-limit等,都不见效果。



【复现路径】
【问题现象及影响】

【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。
hengpu-cluster-PD-1658385668172.json (217.4 KB) hengpu-cluster-PD_2022-07-21T06_58_41.869Z.json (16.0 MB)

跨表合并region开启了么?

enable-cross-table-merge

  • 设置是否开启跨表 merge。
  • 默认值:true

https://tidb.net/blog/0b1b8ff3

开了,上图中有

还有这个参数也要调整,当时我也遇到了

enable-cross-table-merge 默认 false ,如果为 true,则表示可以合并不同表中的两个区域,仅当 key type 为 “table” 时此选项才有效。

patrol-region-lnterval也调小试试

tidb中key-type应该默认为table吧,这个从来没改过的。

这个已经从100ms改为了10ms了,还是没有效果

查看tikv 参数 split-region-on-table 是否为false, 重启tikv 条件允许的话,可以驱逐一个tikv leader 为0 后,重启下tikv

通过show config,在线查询 coprocessor.split-region-on-table 就是 false

我发的FAQ里的其他参数也试试,我当时也是按照这个FAQ最后将empty region清零的

是否部分磁盘使用率高,达到了这两个参数的阀值

如果是就调整这两个参数,
看你的参数应该是磁盘60%就会有问题

是有节点磁盘使用率过高,但是有节点使用率不高,所以目前怀疑是empty-region造成的。如果修改了这个参数,导致节点分数计算问题,是不是可能会导致雪崩发生。

临时解决办法,手动创建一些operator来merge region

echo 'tiup ctl:v4.0.12 pd operator add merge-region '`tiup ctl:v4.0.12 pd region check empty-region --pd 10.1.48.44:2379 | jq '.regions[].id' | tail -1000 | xargs -l2`

这个参数在4.0以后应该是默认为false了,这个参数在配置文件中没有配置,查询出来已经设置为false了。还是没有用。

可以新增节点,然后调整参数,等待集群自动平衡,我之前遇到的是这样,雪崩应该不会,只是调高阀值一点。

还是建议按照FAQ中说的reload试一下

看你上面所有的操作都做过,但是没用是吧?
看下grafana上pd的监控,看看关于region的operator有没有生成啊。
我遇到过类似问题,怎么调storelimit,缩短merge时间都不管用,最后切了一下pd的leader就嗖嗖的merge起来了。
你可以试试:stuck_out_tongue_winking_eye:
可能是奇技淫巧,但是你上面的各种操作都做了,也就只能死马当活马医了,可以一试。
切换leader的命令:

pd-ctl -i
member leader show
#将 leader 从当前成员移走:

>> member leader resign
#将 leader 迁移至指定成员:

>> member leader transfer pd3
1 Like

技术大拿 溜溜溜

empty region是GC在对drop/truncate对象处理后产生的。看empty region讲课趋势是往下走的 ,只是region合并的较慢,可以在调大参数看看 region-schedule-limit:2048 ,merge-schedule-limit=64

切换了leader也是不行。。。。。