执行 tpch 时,SQL 一直出现 OOM

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
三个 tiflash 节点,配置为 32 vcore,128G 内存,在执行 tpch SQL 时出现 OOM,查看监控内存消耗并不多。同时偶尔会出现 TiFlash 节点重启
【概述】 场景 + 问题概述
TPCH 测试
【背景】 做过哪些操作
根据 TPCH 测试文档调整给出的参数
【现象】 业务和数据库现象

【问题】 当前遇到的问题
执行 SQL出现 OOM
【业务影响】

【 TiDB 版本】
5.2.1

【附件】 相关日志及监控(https://metricstool.pingcap.com/)
在 12:43 左右 SQL 出现 OOM,可以看到内存使用量并不高。


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

:joy:哪个节点发生的 oom,oom tidb- server 侧会有一些参数进行调整,其他建议关注一些 慢 SQL,可以根据内存排序,看看是否执行计划合理

1 个赞

11:40 开始第一次执行 TPCH 测试时, SQL 执行出现 OOM 报错,如下:
execute run failed, err execute query
/PLACEHOLDER/ select
sum(l_extendedprice) / 7.0 as avg_yearly
from
lineitem,
part
where
p_partkey = l_partkey
and p_brand = ‘Brand#44’
select
0.2 * avg(l_quantity)
from
lineitem
where
l_partkey = p_partkey
);
failed Error 1105: Out Of Memory Quota![conn_id=2681]
同时伴随着 tiflash 重启,见截图左一,但是此次内存使用量并不高。
12:43 开始第二次执行 TPCH 测试,同样的 SQL 仍旧出现 OOM 报错,如上 SQL 信息,但是节点没有重启,内存使用量也不高。
两次执行时的内存消耗情况见截图。
问题:
1、当前机器内存足够,想知道SQL 执行时出现的 Out Of Memory Quota 报错是什么引起的
2、两次执行同样的 SQ L 都出现 OOM 报错,为什么第一次 tiflash 会重启,第二次不会

1 个赞

https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#mem-quota-query

tidb 有参数限制一条sql使用的最大内存阈值,超过就会报oom。可以用set改改

2 个赞

:call_me_hand::call_me_hand::call_me_hand:

1 个赞

tiflash重启的原因要查tiflash日志才能知道,不能简单的认为oom导致tiflash重启。

1 个赞

@白也__ 请问修改 mem-quota-query 后还有 OOM 或重启 现象发生吗?

1 个赞

MySQL [(none)]> select @@tidb_mem_quota_query;
±-----------------------+
| @@tidb_mem_quota_query |
±-----------------------+
| 1073741824 |
±-----------------------+
1 row in set (0.00 sec)

MySQL [(none)]> set tidb_mem_quota_query=34359738368;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> select @@tidb_mem_quota_query;
±-----------------------+
| @@tidb_mem_quota_query |
±-----------------------+
| 34359738368 |
±-----------------------+
1 row in set (0.00 sec)

然后就可以愉快地tpch测试了

1 个赞

bench 之前,请执行 analyze table xxx

1 个赞

OOM 是 TiDB 的话,建议执行下 analyze table。因为如果统计数据不准,执行计划也不合理,导致没有把查询下推到 tiflash

1 个赞