【 TiDB 使用环境】生产环境 or 测试环境 or POC
【 TiDB 版本】TiDB v.5.4.0 && TiFlash v5.4.1
【遇到的问题】bench prepare 20G dataset, then OOM
【复现路径】做过哪些操作出现的问题
1、try “set @@session.tidb_mem_quota_query = 16000000000;”, seems no effect.
2、I restarted the client connection, however the variable rollback a default value
【问题现象及影响】
【附件】
请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。
操作:
1:本地 tiup bench tpch prepare 20G 数据到 远端 tiflash(k8s部署)
2:本地 tiup bench tpch run,第二个 query OOM,结束当前操作
3:新开一个 session 设置 mem_quota 变量为 16G,再次尝试无效,仍然 OOM
想法
1、如果tiup bench 能够提供原始的 sql 语句,就可以在 sql 上做文章令 query mem = 16G 生效,但是现在看来,无法获取 这10+ sql
2、mem_quota 作为 session 级变量,无法通过 tiup bench 设置,导致无法继承其他 session 设置的值
困境
如何令 tiup bench tpch oom 不再发生(if not set quota_mem)
jiyf
(Jiyf)
8
设置几个 TiDB 配置文件参数:
- server-memory-quota:设置 tidb-server 实例的最大内存用量,单位为字节
- mem-quota-query:单条 SQL 语句可以占用的最大内存阈值,单位为字节,该值作为系统变量 tidb_mem_quota_query 的初始值。
- oom-use-tmp-storage:设置 true. 设置是否在单条 SQL 语句的内存使用超出
mem-quota-query
限制时为某些算子启用临时磁盘。
- oom-use-tmp-storage: 设置 true
- tmp-storage-path: 单条 SQL 语句的内存使用超出
mem-quota-query
限制时,某些算子的临时磁盘存储位置。
- oom-action:默认值:“cancel”
设置 bench 参数:
- -T, --threads int Thread concurrency (default 1)1,就使用默认值
- –queries string All queries (default “q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21,q22”),如果某个 query 执行失败,可以在这里指定进行重试
对于 k8s 环境,可以在 yaml 中配置相关参数:
tidb:
baseImage: pingcap/tidb
replicas: 1
service:
type: ClusterIP
config:
log:
file:
filename: /var/log/tidblog/tidb.log
level: "warn"
确认下,配置的 key 是 config-log ?
尝试当前的配置
config: |
[performance]
tcp-keep-alive = true
mem-quota-query = 8000000000
后 apply yaml,select quota 还是默认值 1073741824
jiyf
(Jiyf)
10
试试这样子:
config: |
mem-quota-query = 8000000000
[performance]
tcp-keep-alive = true
1 个赞
system
(system)
关闭
11
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。