Used: 438105027512, Limit: 438103947386. Mem usage has exceed the limit of single query, You can change the limit by set session variable exec_mem_limit目前我设置比较这个限制的值大,还是报错超出限制,

语句 应该是针对session_variables表 设置的参数吧

可以了,现在不报错了,我一直以为set ,感谢

ERROR 1064 (HY000): Memory of process exceed limit. Pipeline Backend: 10.0.0.81, fragment: 4e30cb19-26b5-11ed-adf2-fa163e88b4d6 Used: 486781929816, Limit: 486782163763. Mem usage has exceed the limit of BE 麻烦问一下这个应该调整那个参数呢?感谢

ERROR 1064 (HY000): Memory of query_pool exceed limit. Pipeline Backend: 10.0.0.85, fragment: 2d0c6b8e-26b8-11ed-adf2-fa163e88b76a Used: 438105471240, Limit: 438103947386. Mem usage has exceed the limit of query pool

这个我看机器上还剩下400g 内存

这个报错信息就是内存超限了,几百亿的数据 7BE可能支撑不了。

如果其他三台也扩容成be 是不是稳定性,性能会更差,目前300亿-600亿数据量级别12个be应该可以支撑吧

如果你是10台服务器,用来作测试,可以1FE,9BE

像这样内存超限的话只能是增加be节点吗?按道理应该参数来调整比较机器上还剩下很多内存,不知道我这样理解对吗

这个与数据倾斜也有关系,有些节点因为数据量特别大,内存占用就多,如果这个节点内存超限,也会导致整个SQL执行失败的,就是要将数据放到内存处理,效率才会这么高的,所以内存是很重要。

我请教一下开发同学可不可以执行某些参数,执行会慢点,尽量不报错吧。

对对,我试过这个样方法不管用
1、执行追加定时任务
#!/bin/bash

#分发脚本
#for i in $(cat /etc/hosts|awk ‘{print $1}’|grep ^10);do scp -rp cguop.sh $i:/export/;done
#for i in $(cat /etc/hosts|awk ‘{print $1}’|grep ^10);do ssh $i sh /export/1.sh;done
#for i in $(cat /etc/hosts|awk ‘{print $1}’|grep ^10);do ssh $i sh /export/cguop.sh.sh;done
#脚本加执行权限
cd /export && chmod +x cguop.sh && chmod +x test.sh

#清定时任务
crontab -r

#追加定时任务
#* * * * * sleep 2; /export/cguop.sh >>/tmp/date.txt
(crontab -l ; echo “* * * * * sleep 5; /bin/bash /export/test.sh >>/tmp/date.txt”)| crontab -

#增加定时任务
(crontab -l ; echo “*/1 * * * * echo 3 > /proc/sys/vm/drop_caches”)| crontab -

2、执行脚本实现每秒执行一次
#!/bin/bash
step=1 #间隔的秒数,不能大于60
for ((i=0;i<60;i=(i+step)));do
date >> “/home/unicom/m每十秒内存情况统计”
/export/cguop.sh >> /tmp/1.txt
sleep $step
done
exit 0

3、执行资源限制
#!/bin/bash

step=1
for (( i = 0; i < 60; i = (i+step) )); do
#创建 mem cgroup 目录
mkdir -p /sys/fs/cgroup/memory/test/
echo 1
#进入 test目录
cd /sys/fs/cgroup/memory/test/

#追加进程
for i in $(ps -ef |grep starrocks_be|grep -v grep |awk ‘{print $2}’);do sudo sh -c “echo $i >> cgroup.procs”;done

#查看进程写入是否成功
cat /sys/fs/cgroup/memory/test/cgroup.procs

#追加内存限制
sudo sh -c “echo 515396075520 > memory.limit_in_bytes”

#查看内存限制
cat /sys/fs/cgroup/memory/test/memory.limit_in_bytes

    mem_used_persent=`free -m | fgrep "Mem" | awk '{printf "%d", ($3)/$2*100}'`
    if [ $mem_used_persent -ge 60 ];then

#判断内存使用超过60%,限制cpu使用率,这样内存使用率会下降
mkdir -p /sys/fs/cgroup/cpu/starrocks/ && echo “200000” > /sys/fs/cgroup/cpu/starrocks/cpu.cfs_quota_us && echo $(ps -ef |grep starrocks_be|grep -v grep|awk ‘{print $2}’) > /sys/fs/cgroup/cpu/starrocks/cgroup.procs
else
mkdir -p /sys/fs/cgroup/cpu/starrocks/ && echo “9000000” > /sys/fs/cgroup/cpu/starrocks/cpu.cfs_quota_us && echo $(ps -ef |grep starrocks_be|grep -v grep|awk ‘{print $2}’) > /sys/fs/cgroup/cpu/starrocks/cgroup.procs
fi
sleep $step
done

就是用cguog限制,当你超过这个参数就限制资源,但是好像也管用

那个hash join 那个看看有参数调整一下,感谢

ERROR 1064 (HY000): Memory of query_pool exceed limit. Pipeline Backend: 10.0.0.85, fragment: 2d0c6b8e-26b8-11ed-adf2-fa163e88b76a Used: 438105471240, Limit: 438103947386. Mem usage has exceed the limit of query pool

ERROR 1064 (HY000): row count of right table in hash join > 4294967295
是不是主要这两个报错信息,还有其他吗?

其他的没有了,主要是这个两个,麻烦了感谢

这个 也帮忙看看

好的 记录好了 明天答复您

这个参数执行完之后,是不是执行完一个sql要在执行一下呢,我刚才下又报这个错误了