tiup bench tpch OOM

【 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 获取。

顶顶顶

顶顶顶顶顶顶

:face_vomiting::face_vomiting::face_vomiting:

:blush::blush::blush:

能详细描述一下吗?

操作:
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)

设置几个 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

试试这样子:

config: |
mem-quota-query = 8000000000
[performance]
tcp-keep-alive = true

1 个赞

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