【查询报错】Memory of query_pool exceed limit

ERROR 1064 (HY000): Memory of query_pool exceed limit. Used: 48600569496, Limit: 49124342771. Mem usage has exceed the limit of query pool
请问出现上述报错需要如何处理?

curl -s http://BE_IP:BE_HTTP_PORT/metrics | grep “starrocks_be_.*_mem_bytes” 看看什么地方用的内存多, 怀疑是当前有大查询, 把内存吃光了,curl -s http://BE_IP:BE_HTTP_PORT/metrics | grep “starrocks_be_tcmalloc_bytes_in_use” 这个可以看实际使用的内存大小。

请问怎么调大这个数值?我也遇到这个错误。

exe_mem_limit

设置了也没用。貌似是吃完了系统的内存,然后才报错。

看下我上面的排查方法,可以排查定位下

版本是2.0以下的吗?
是的话 建议进行升级,2.0以下的版本存在内存统计不准确的问题,可以升级到2.0以上的版本

已经是最新 2.2.0 版本了

curl -s http://BE_IP:BE_HTTP_PORT/metrics | grep “starrocks_be_.*_mem_bytes”
curl -s http://BE_IP:BE_HTTP_PORT/metrics | grep “starrocks_be_tcmalloc_bytes_in_use” 这两个命令的结果方便提供下吗?

能发下你的sql和各表数据量大小么?

1赞

请问exec_mem_limit参数可以全局配置吗?官方文档里面说是会话级参数

你好,我就是大查询把内存吃光了,请问如何限制呢?

我发现查询结束之后,这个query_pool的内存好像不会马上降下去,需要经过一段时间才会降下去,
这样导致有些节点内存使用量持续会增加,这种有办法优化或者手动触发尽快释放内存吗

参考 [问题排查]内存相关 可以分析下具体是哪块内存还占用