BCS-DBA
(Liuhuan Happy Study)
1
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】 V7.5.3
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
关于资源隔离请教一个问题: TiDB 流控:TiDB 流控使用[令牌桶算法]做流控的。怎么知道桶内令牌的总量?令牌和RU直接的关系?创建资源组的时候,制定的 RU_PER_SEC = 500
是令牌回填的速度吗?
kang
2
是的,RU_PER_SEC
参数定义了资源组的令牌回填速度,即每秒钟回填的令牌数量。这意味着如果设置RU_PER_SEC = 500
,那么每秒钟会有500个令牌被回填到桶中,供后续的请求使用
在 TiDB 的流量控制中,令牌系统是一个重要的机制,用于管理和调节对资源的访问。该系统基于令牌桶算法(Token Bucket Algorithm),通过在每个 TiDB 节点中维护多个本地令牌桶(Local Token Bucket)来实现资源的分配和控制。每当一个请求到达时,它需要从令牌桶中获取一个令牌才能继续执行。如果令牌桶中的令牌耗尽,请求将会被阻塞,直到有新的令牌可用。
在这个系统中,RU(请求单位,Request Units)是一个关键的度量指标,用于衡量查询的 CPU 消耗。TiFlash 流量控制使用 RU 来测量和管理请求的资源消耗。具体来说,RU 代表了在 TiFlash 中资源消耗的单位,通常用于调度和扣除资源。通过 RU,TiDB 可以有效地管理不同查询和操作的资源使用情况,从而实现资源的隔离和优化。
关于 RU_PER_SEC = 500 的问题,这个值通常表示令牌的补充速率。也就是说,系统每秒钟会向令牌桶中添加 500 个令牌。这意味着在理想情况下,系统可以每秒处理最多 500 个请求(假设每个请求都需要一个令牌)。如果请求的速率超过这个补充速率,令牌桶将会被耗尽,导致后续请求需要等待,直到有新的令牌被添加进来。
因此,RU_PER_SEC = 500 确实可以被视为令牌的补充速率,这个速率直接影响到系统的流量控制能力和资源的使用效率。
更多关于 TiDB 流量控制和 RU 的详细信息,可以参考以下链接: