doris2.1.7在k8s中执行insert into 会将be全部搞挂

Viewed 18

版本:2.1.7
安装方式:k8s

问题描述: doris2.1.7执行insert into 有时会将3个be同时搞挂,pod退出码为137,BE日志非常正常,此码说明内存超了,但是我配置的内存是没有超的,配置的最大内存是32G,但是top看到内存才7G
以下是具体信息:

执行SQL

set batch_size = 100;
-- 这个SQL中 有一个字段可能非常大
insert into ods.asset_struct_msg select pt,`database`,`table`,`begin`,`fields`,receive_time,src,ts from paimon.ods.asset_struct_msg where pt between '20250101' and '20251001';

现象:一执行,过几秒钟3个be节点部同时重启

be.conf:

JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Xmx24576m -DlogPath=$DORIS_HOME/log/jni.log -Xloggc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDLE_TIME=300000 -DJDBC_MAX_WAIT_TIME=5000"

# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Xmx24576m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDLE_TIME=300000 -DJDBC_MAX_WAIT_TIME=5000"

JEMALLOC_CONF="percpu_arena:percpu,background_thread:true,metadata_thp:auto,muzzy_decay_ms:15000,dirty_decay_ms:15000,oversize_threshold:0,lg_tcache_max:20,prof:false,lg_prof_interval:32,lg_prof_sample:19,prof_gdump:false,prof_accum:false,prof_leak:false,prof_final:false"
JEMALLOC_PROF_PRFIX=""
# INFO, WARNING, ERROR, FATAL
sys_log_level = INFO

内存配置还是很大的

k8s分配的be资源是8C32G 查看内存又非常正常, 以下可以看到,重启前最后的top信息
image.png

BE退出时日志:
image.png

1 Answers