tidb集群,单个sql会话查询超过参数限制,并没有报出OOM,内存达到37G时,才发生OOM

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】

tidb集群,单个sql会话查询超过参数限制,仍能查询

接上次这个帖子,又新发现一个问题:

  1. 生环境tidb集群中的Tidb-server的参数配置:
    mem-quota-query: 16g
    performance.txn-total-size-limit: 4g
    set global tidb_mem_oom_action=‘cancel’;

在当前这3个配置参数设置的情况下,发现单个sql执行查询时,消耗内存不是在16G时,报错OOM,而是在37G左右时,才报错OOM。


监控截图如下:

所以,想请教一下,如果解释这个现象,这个OOM时,内存消耗为啥不是刚超过16G或4G时,报出OOM呢?

【资源配置】
【附件:截图/日志/监控】

你这个系统变量 tidb_mem_quota_query 设置多少了

贴执行计划。

https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_enable_rate_limit_action
这个参数设置过没?

image


这个参数,印象中升级后,没有调整过。目前来看,是on的状态。我再尝试调整为off,再试下。

昨天,生产环境还有一个sql是update的操作,单个update 语句占用41G内存。

可以改下试试,我印象中,论坛有人因为这个参数出现过类似的问题。

我一般都是脚本kill

for list in /server/mysql5.7/bin/mysql -hXXX.XXX.XXX.XXX-p'PASSWORD' -vvv -e " select id from INFORMATION_SCHEMA.processlist a where a.info is not null and (mem >=11474836480 or time >600);" |grep -Ev 'id|ID|iD|Id' |awk -F "|" '{print $2}'
do
echo $list
/server/mysql5.7/bin/mysql -hXXX.XXX.XXX.XXX-p’PASSWORD’ -vvv -e “select id,time,info,mem from INFORMATION_SCHEMA.processlist a where id=$list and a.info is not null;;” >/sh/killtestlog/date +%s.log
/server/mysql5.7/bin/mysql -hXXX.XXX.XXX.XXX-p’PASSWORD’ -vvv -e " kill tidb $list ;"
done;

1 个赞