关于TiKV节点下线过程中通过store limit 动态修改store消费能力问题

【TiDB 使用环境】生产环境
【TiDB 版本】7.5.3
【操作系统】CentOS Linux release 7.4.1708 (Core)
【部署方式】云上部署(腾讯云)
【集群数据量】10TB
【集群节点数】13Tikv
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

一、背景
最近在调整该集群的tikv节点配置, 历史节点低配数据量,目前一半节点配置升级,另外一半节点逐步下线。

刚开始一两个节点下线因为节点上数据少,下线时间还算可以。随着节点变少,单节点承载的数据量变多。节点下线时间越来慢。

看了官方文档 store limit 可以调整加速节点下线。 在之前的时候,所有store节点的 add-peer/remove-peer 都是45 ;通过监控能看到 replace-rule-offline-leader-peer 平均能到每分钟60个; replace-rule-offline-peer 平均能到95左右;

然后昨晚操作的时候,想着能加速下,就动态调整 store limit all 60 ,结果发现 operator的相关操作能力都急剧下降 (create \ check \ finish ) 具体如下图

然后两分钟之后调整这个值恢复到 45 (store limit 45) 发现不起作用, 同步检查数据库中 配置发现是同步修改的 (show config where type=‘pd’ and name like ‘%store-limit%’ ; )

另外数据库中 schedule-limit 相关参数如下,过程中没有修改

+------+-------------------+------------------------------------+-------+
| Type | Instance          | Name                               | Value |
+------+-------------------+------------------------------------+-------+
| pd   | 172.31.7.144:2379 | schedule.hot-region-schedule-limit | 4     |
| pd   | 172.31.7.144:2379 | schedule.leader-schedule-limit     | 16    |
| pd   | 172.31.7.144:2379 | schedule.merge-schedule-limit      | 8     |
| pd   | 172.31.7.144:2379 | schedule.region-schedule-limit     | 2048  |
| pd   | 172.31.7.144:2379 | schedule.replica-schedule-limit    | 128   |
| pd   | 172.31.7.144:2379 | schedule.witness-schedule-limit    | 4     |
+------+-------------------+------------------------------------+-------+
6 rows in set (0.02 sec)

想了解 store limit 是在下线过程中不能动态调整还是什么原因导致了这个速度下降呢?

tikv 正常下线的场景,remove-peer 的并发度会被设置的很大

store limit all 60 相当于把 remove-peer 设置成 60 ,其实是调低了。所以你速度下降是预期的。

那有两个疑问:
1、从这里看上限是“无限制” ,但是不能真的是无限制吧。 之前store-limit 设置的 add-peer / remove-peer 是45 , 我理解实际是按照45限制的才对, 除非这里的store limit 配置的45一直没有生效?

2、如果没有生效的话,我不管修改成多少,相对于无效大肯定是变得“很小”了如果是生效的情况下,45调整到60 应该是调大是合理的才对,

scale-in tikv 以后,pd 会把该节点的 store state 设置成 offline 状态。然后 PD 会把 offline 状态的 tikv 的 remove-peer 设置成 100000000,也就是覆盖了你以前设置的 “45”。

这个逻辑是从哪里看到的, 是截图的项目源码吗?

那如果是这个逻辑的话,意思TiKV节点开始下线之后,想要加速就不能修改 store limit 了,不,应该是不能通过 store limit all xxx 来修改所有的,只能通过 store limit store-id xxx 修改除了offline状态的其他所有节点是吧?

感谢解惑。。我之前也有这样的疑问。。

哈喽,目前加速下线你这边有什么好的建议么?

逻辑是看的 PD 源码,代码位置在这里
https://github.com/tikv/pd/blob/d71a1a34df216ff54cd1002edb6d4eb37af0b18d/server/cluster/cluster.go#L1524
想加速下线的话,当前下线节点 store limit 是不需要调整的。其他配置可参考 https://docs.pingcap.com/zh/tidb/stable/pd-scheduling-best-practices/#节点下线速度慢

下线的本质就是 region 的搬迁,除了 PD 参数,tikv 也有参数可调。不是一两句能说清楚的 :rofl:

好的谢谢,我研究下

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