[转帖]Load Base Split

load,base,split · 浏览次数 : 0

小编点评

**Load Base Split 配置** Load Base Split 是 TiKV 中 4.0 版本中的特性,旨在解决 Region 访问分布不均匀造成的热点问题。 **场景** 当流量集中在某些节点时,PD 会尝试通过调度 Hot Region,尽可能让这些 Hot Region 均匀分布在各个节点上。但是 PD 的调度的最小粒度是 Region。如果集群的热点数目少于节点数目,或者说存在某几个热点流量远高于其他 Region,对 PD 的热点调度来说,能做到的只是让热点从一个节点转移到另一个节点,而无法让整个集群承担负载。 **设置** Load Base Split 的配置参数包括: * **split.qps-threshold**:热点的 QPS 阈值。 * **split.byte-threshold**:热点的流量阈值。 * **split.region-cpu-overload-threshold-ratio**:热点的 CPU 使用率(占读线程池 CPU 时间的百分比)阈值。 **默认配置** * **split.qps-threshold** 默认设置为 1500。 * **split.byte-threshold** 默认设置为 15 MiB。 * **split.region-cpu-overload-threshold-ratio** 默认设置为 0.5。 **注意** * Load Base Split 只能在满足以下条件时进行: * 集群中的热点数目少于节点数目。 * 存在某几个热点流量远高于其他 Region。 **其他信息** * Load Base Split 更新于 2023 年 5 月 29 日 15:18:41。

正文

https://docs.pingcap.com/zh/tidb/stable/configure-load-base-split#load-base-split

 

Load Base Split 是 TiKV 在 4.0 版本引入的特性,旨在解决 Region 访问分布不均匀造成的热点问题,比如小表的全表扫描。

场景描述

在 TiDB 中,当流量集中在某些节点时很容易形成热点。PD 会尝试通过调度 Hot Region,尽可能让这些 Hot Region 均匀分布在各个节点上,以求获得更好的性能。

但是 PD 的调度的最小粒度是 Region。如果集群的热点数目少于节点数目,或者说存在某几个热点流量远高于其他 Region,对 PD 的热点调度来说,能做到的也只是让热点从一个节点转移到另一个节点,而无法让整个集群承担负载。

这种场景在读请求居多的 workload 中尤为常见。例如对小表的全表扫描和索引查找,或者是对一些字段的频繁访问。

在此之前解决此类问题的办法是手动输入命令去拆分一个或几个热点 Region,但是这样的操作存在以下两个问题:

  • 均匀拆分 Region 并不一定是最好的选择,请求可能集中在某几个 Key 上,即使均匀拆分后热点可能仍然集中在其中一个 Region 上,可能需要经过多次均匀拆分才能达到目标。
  • 人工介入不够及时和易用。

实现原理

Load Base Split 会基于统计信息自动拆分 Region。通过统计信息识别出读流量或 CPU 使用率在 10s 内持续超过阈值的 Region,并在合适的位置将这些 Region 拆分。在选择拆分的位置时,会尽可能平衡拆分后两个 Region 的访问量,并尽量避免跨 Region 的访问。

Load Base Split 后的 Region 不会被迅速 Merge。一方面,PD 的 MergeChecker 会跳过 hot Region,另一方面 PD 也会针对心跳信息中的 QPS去进行判断,避免 Merge 两个 QPS 很高的 Region。

使用方法

目前的 Load Base Split 的控制参数如下:

  • split.qps-threshold:表明一个 Region 被识别为热点的 QPS 阈值。当 region-split-size 小于 4 GB 时,默认为每秒 3000 QPS。当 region-split-size 大于或等于 4 GB 时,默认值为每秒 7000 QPS。
  • split.byte-threshold:自 v5.0 引入,表明一个 Region 被识别为热点的流量阈值,单位为 Byte。当 region-split-size 小于 4 GB 时,默认值为每秒 30 MiB 流量。当 region-split-size 大于或等于 4 GB 时,默认值为每秒 100 MiB 流量。
  • split.region-cpu-overload-threshold-ratio:自 v6.2.0 引入,表明一个 Region 被识别为热点的 CPU 使用率(占读线程池 CPU 时间的百分比)阈值。当 region-split-size 小于 4 GB 时,默认值为 0.25。当 region-split-size 大于或等于 4 GB 时,默认值为 0.75

如果连续 10s 内,某个 Region 每秒的各类读请求之和超过了 split.qps-threshold、流量超过了 split.byte-threshold,或 CPU 使用率在 Unified Read Pool 内的占比超过了 split.region-cpu-overload-threshold-ratio,那么就会尝试对此 Region 进行拆分。

目前默认开启 Load Base Split,但配置相对保守。如果想要关闭这个功能,将 QPS 和 Byte 阈值全部调到足够高并将 CPU 占比阈值调为 0 即可。

目前有两种办法修改配置:

  • 通过 SQL 语句修改,例如:

    # 设置 QPS 阈值为 1500 SET config tikv split.qps-threshold=1500; # 设置 Byte 阈值为 15 MiB (15 * 1024 * 1024) SET config tikv split.byte-threshold=15728640; # 设置 CPU 使用率阈值为 50% SET config tikv split.region-cpu-overload-threshold-ratio=0.5;
  • 通过 TiKV 修改,例如:

    curl -X POST "http://ip:status_port/config" -H "accept: application/json" -d '{"split.qps-threshold":"1500"}' curl -X POST "http://ip:status_port/config" -H "accept: application/json" -d '{"split.byte-threshold":"15728640"}' curl -X POST "http://ip:status_port/config" -H "accept: application/json" -d '{"split.region-cpu-overload-threshold-ratio":"0.5"}'

同理,目前也有两种办法查看配置:

  • 通过 SQL 查看,例如:

    show config where type='tikv' and name like '%split.qps-threshold%'
  • 通过 TiKV 查看,例如:

    curl "http://ip:status_port/config"
 
注意

从 v4.0.0-rc.2 起可以使用 SQL 语句来修改和查看配置。

与[转帖]Load Base Split相似的内容:

[转帖]Load Base Split

https://docs.pingcap.com/zh/tidb/stable/configure-load-base-split#load-base-split Load Base Split 是 TiKV 在 4.0 版本引入的特性,旨在解决 Region 访问分布不均匀造成的热点问题,比如小表

[转帖]LOAD DATA INFILE 导入数据

https://www.jianshu.com/p/bcafd8f3ad8e LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并写入一个表中。文件名称必须为一个文字字符串。LOAD DATA INFILE 是 SELECT ... INTO OUTFILE 的相对语句。把表的数

[转帖]gRPC Load Balancing

https://www.cnblogs.com/charlieroro/p/14312362.html 翻译自:https://grpc.io/blog/grpc-load-balancing/ 这是gRPC负载均衡的第一篇,后续会给出基于golang XDS服务发现的例子,了解golang XDS

[转帖]HTTP Load Balancing

https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/ Load balance HTTP traffic across web or application server groups, with sev

[转帖]ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.

1.报错信息 ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access. 1 2.解决方法 2.1 方法一 查询是否启动local_infile,查询命令如下: sho

[转帖]Pepper-Box - Kafka Load Generator

https://github.com/GSLabDev/pepper-box Pepper-Box is kafka load generator plugin for jmeter. It allows to send kafka messages of type plain text(JSON,

[转帖]RAC AWR重要指标说明

1.Global Cache Load Profile Global Cache blocks received: 接收到的全局缓冲块 Global Cache blocks served: 发送的全局缓冲块 GCS/GES messages received: GCS消息接收 GCS/GES me

[转帖]解决Nginx负载均衡重复提交问题

https://www.qiansw.com/resolving-nginx-load-balancing-repeated-commit-problems.html 这篇文章的发布时间较早,其中的信息可能已经过时,阅读时请注意甄别。 Nginx [测试环境 Tengine version: Ten

[转帖]关于F5负载均衡你认识多少?

https://www.cnblogs.com/xiexun/p/10718348.html 网络负载均衡(load balance),就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。实际上

[转帖]检查服务器性能的7个命令

https://juejin.cn/post/6844903661450051591 top 示例: kasheemlew@ubuntu-14:~$ top top - 17:27:11 up 33 min, 1 user, load average: 0.00, 0.00, 0.00 Tasks: