使用tidb_mem_quota_query参数控制SQL内存使用不生效

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.1
【复现路径】直接从tidb终端执行SQL
【遇到的问题:问题现象及影响】mem_quota_query参数不生效,会导致SQL语句把内存用完触发oom,导致tidb服务频繁被kill掉
【资源配置】32C64G
【附件:截图/日志/监控】

你设置错数值了吧 6442450944是6G,再改大点

是的,我的目的是想把单SQL内存最大限制在6G

我的目的是希望把这些较大的语句超过6G的时候就kill掉,防止把服务器的内存用完导致整个服务被kill掉

tidb_mem_oom_action你配置的是CANCEL吗

1 个赞

是的,
tidb_mem_oom_action 是CANCEL
oom-use-tmp-storage 这个参数也设置为false,关闭临时存储

6.1限制单个sql内存的好像不是很好用啊,6.4开始有 tidb_server_memory_limit限制整个tidb内存的对oom问题处理比较好

:sweat_smile: 我们的这个版本太老了,我是看到官方文档上有写可以用这个参数控制

先看看慢查询吧,把那些内存消耗大的sql看看能不能优化掉

6.1版本的explain 也看不到内存消耗 :sweat_smile:

它不是执行10分钟才崩吗,没崩前用explain for connection看下,把结果用文本发出来

嗯,我尝试看看能不能抓出来,手动复现的时候会把整个实例打死

我也是这样问题,设置那个参数没有用

我的版本更低,都没有这个参数

这个参数在6.1之前是session级别的,需要在写SQL之前手动设置好像

专栏 - 【SOP】最佳实践之 TiDB OOM 分析 | TiDB 社区
看看这个有没有点思路

我5.4的版本发现也有失效情况

自己监控语句达到以后就干掉,内存耗尽就直接重启

我的也有失效情况

查询一下是否存在多语句并发的问题,不一定是参数失效