资源管控管控哪些资源讨论

【 TiDB 使用环境】生产环境、
【 TiDB 版本】7.1.0
问题:
TiDB资源管控做了tidb层面还是 tikv层面的资源管控(CPU、iops、网络IO)?

官方文档描述在tidb层面做资源管控,tikv层面按照配额做优先级调度;但查看代码同时计算了tidb和tikv的 cpu。究竟以哪个为主?

官方描述(https://docs.pingcap.com/zh/tidb/v7.1/tidb-resource-control
TiDB 层会根据用户所绑定资源组设定的配额对用户的读写请求做流控,TiKV 层会根据配额映射的优先级来对请求做调度。通过流控和调度这两层控制,可以实现应用的资源隔离,满足服务质量 (QoS) 要求。

翻看代码发现:
计算了所有tidb和tikv层面的相关cpu资源。
https://github.com/pingcap/tidb/blob/release-7.1/executor/calibrate_resource.go#L221C39-L221C39

引用历史讨论:

TiDB资源管控总量上限讨论

其实在5.4没出现资源管控前我们已经开始做管控工作了
业务分tp ap
ap放在半夜 sql指到单独的tidb 只执行ap业务 只走tiflish
这样tikv的资源永远都够用
分组 不同的业务组用不同的tidb前端 那个tidb有故障就是那个业务组有问题。
5年 没出任何问题

1 个赞

学习了。

嗯,不错

1 个赞

嗯,学习了

TiDB 资源管控涉及到了 TiDB 层面和 TiKV 层面的资源管控。具体来说,TiDB 负责对 CPU 和网络 IO 进行资源管控,而 TiKV 则负责对磁盘 IO(包括 IOPS)进行资源管控。

在 TiDB 层面,资源管控主要通过设置资源组(Resource Group)来实现。资源组是 TiDB 中的一个概念,通过将会话与用户组进行绑定,并利用用量(RU)对资源限额进行定义,实现对 CPU 和网络 IO 的资源管控。您可以在 TiDB 配置中启用资源管控,并根据实际需求创建和配置资源组,以实现对 TiDB 层面的资源管控。

而在 TiKV 层面,资源管控主要通过调度控制来实现。通过在 TiKV 配置中启用调度控制,TiKV 可以对磁盘 IO 进行资源管控,包括限制 IOPS(每秒输入/输出操作数)等。这样可以确保 TiKV 在处理数据时不会过载,从而保证整个系统的稳定性和性能。

综上所述,TiDB 资源管控涉及到了 TiDB 层面和 TiKV 层面的资源管控,分别对 CPU、网络 IO 和磁盘 IO(包括 IOPS)进行管控。这样可以有效地管理和优化系统资源的使用,提高系统的性能和稳定性。

2 个赞

将后端任务(Addindex,Importinto任务)调度到指定的 TiDB 节点执行

TiDB 7.2 开始,引入了分布式框架 ,该框架的目标是实现对所有后端任务的统一调度与分布式执行,并为接入的后端任务提供统一的资源管理能力。分布式框架支持后端任务(特指 Add index 和 Import into 任务)在 TiDB 集群的所有 TiDB 节点上执行,以提升此类任务的性能。而 TiDB 7.5 允许 DBA 将 Add index,Import into 这类消耗资源较多的后端任务调度到指定的 TiDB 节点上执行,从而和存量 TiDB 节点上的负载进行隔离,避免对业务产生影响。当在想要运行后端任务的节点上设置 tidb_service_scope 为 background 时,后端任务分布式框架将调度该节点执行后端任务。但未经这样设置,则该节点将不会被用于执行后端任务。

这一改进真正的突破在于能够动态地添加 TiDB 节点来处理突发的这类后端任务。如果需要导入一个庞大的表,只需向集群中添加若干个 TiDB 节点来完成,而不会对现有 TiDB 节点造成任何额外压力,添加索引的方式也是如此。完成任务后,这些节点可以被撤销。这一功能为在生产集群上轻松处理大型任务(Add index ,Import 大量数据)提供了更加无缝的方式。

标准!

这个有文档出处么?

进一步提问:
1、tikv层面按照什么标准来限制iops,是跟tidb层面一致的RU?
2、RU统计是否包含TiKV中的资源?看代码计算了tikv层面的cpu。

这个还是很重要的,之前遇到过dm同步DDL,owner 执行离线统计的慢查询, 导致DM同步长时间被慢查询长时间阻塞。

题外话:如果能手动调度owner更好了。

我们现在也是这样情况。但是出现运营等跑统计,阻塞线上业务问题,分析可能是慢查询 阻塞了tikv的IO导致。

[专栏 - TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性 | TiDB 社区](专栏 - TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性 | TiDB 社区

说实话,我也没测试过,我是看到官方文档中的说明,等有时间再测一下看看。整体而言,我认为资源管控是一个很好的东西,尤其是对小企业,一套TiDB生产环境标准部署要13台机器,这些机器给一套系统用实在太浪费了。尤其是对哪些原来的MySQL数据库,几百个G,可以一套TiDB替换N个MySQL数据库,有了资源管控才敢放心1换N。要不然心里没底啊,万一哪个数据库抽风,把整个集群搞挂了,就不好了。

了解,上述回复咨询 “表妹”,tikv层面做了一下iops的流控。官方文档介绍的十分隐晦,没提到这部分。

您提到这个,应该是7.4版本后,这个适用于 7.1.0版本么。

我贴的是7.5支持的,7.1不行,可以考虑升级

4。x版本支持不,一直没敢升级

资源管控是7.1才有的,4肯定不支持