broker load 导入hive 数据,报错: [E1011]The server is overcrowded

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】broker load 导入hadoop parquet 数据,报错: [E1011]The server is overcrowded,CUP被占满
【背景】starrocks部署好后,broker load 导入数据正常半个月,现在出现了这个问题
【业务影响】无法导入数据
【StarRocks版本】2.5.7版
【集群规模】例如:3fe(1 leader + 2 follower)+3be(fe与be分开部署)
【机器信息】CPU虚拟核/内存/网卡,例如:48C/128G/千兆网
【表模型】明细模型
【导入或者导出方式】使用broker load 导入hive 数据
【联系方式】StarRocks社区群18-乙酸乙酯香满屋,或者邮箱chenfan331@163.com
【附件】

  • fe.log/be.INFO/由于日志文件太大,已达600多M,需要时上传
    先发报错日志主要内容,替换了网址为xx,其他没有修改

ScannerTotalTime, IOTaskWaitTime, ChunkBufferCapacity, SubmitTaskCount, FileScanner], CastChunkTime=[__MAX_OF_CastChunkTime, __MIN_OF_CastChunkTime], IOTaskExecTime=[__MIN_OF_IOTaskExecTime, __MAX_OF_IOTaskExecTime], MorselsCount=[__MAX_OF_MorselsCount, __MIN_OF_MorselsCount], ReadTime=[__MIN_OF_ReadTime, __MAX_OF_ReadTime], MaterializeTime=[__MIN_OF_MaterializeTime, __MAX_OF_MaterializeTime], ScanTime=[__MIN_OF_ScanTime, __MAX_OF_ScanTime], BufferUnplugCount=[__MAX_OF_BufferUnplugCount, __MIN_OF_BufferUnplugCount], FillTime=[__MIN_OF_FillTime, __MAX_OF_FillTime], CreateChunkTime=[__MAX_OF_CreateChunkTime, __MIN_OF_CreateChunkTime], ScannerTotalTime=[__MAX_OF_ScannerTotalTime, __MIN_OF_ScannerTotalTime], IOTaskWaitTime=[__MAX_OF_IOTaskWaitTime, __MIN_OF_IOTaskWaitTime], SubmitTaskCount=[__MAX_OF_SubmitTaskCount, __MIN_OF_SubmitTaskCount], FileReadTime=[__MAX_OF_FileReadTime, __MIN_OF_FileReadTime], FileScanner=[CastChunkTime, __MIN_OF_FileScanner, FillTime, CreateChunkTime, ReadTime, MaterializeTime, FileReadTime, __MAX_OF_FileScanner]})]), load_counters:{unselected.rows=0, dpp.norm.ALL=491520, dpp.abnorm.ALL=0, loaded.bytes=1171271402}, loaded_rows:491520, backend_id:635002, sink_load_bytes:1171271402, source_load_rows:708608, source_load_bytes:1687282109, load_type:BROKER) query_id=cb72e34d-7f7e-4fe5-9024-9bc2a0ad391b instance_id=cb72e34d-7f7e-4fe5-9024-9bc2a0ad391c
2023-09-20 18:44:00,477 WARN (loading_load_task_scheduler_priority_pool-41|1487) [LoadTask.exec():66] LOAD_JOB=1114387, error_msg={Failed to execute load task}
com.starrocks.common.LoadException: [E1011]The server is overcrowded @10.0.11.xx:8060 [R1][E1011]The server is overcrowded @10.0.11.xx:8060 [R2][E1011]The server is overcrowded @10.0.11.xx:8060 [R3][E1011]The server is overcrowded @10.0.11.xx:8060
at com.starrocks.load.loadv2.LoadLoadingTask.actualExecute(LoadLoadingTask.java:261) ~[starrocks-fe.jar:?]
at com.starrocks.load.loadv2.LoadLoadingTask.executeOnce(LoadLoadingTask.java:175) ~[starrocks-fe.jar:?]
at com.starrocks.load.loadv2.LoadLoadingTask.executeTask(LoadLoadingTask.java:146) ~[starrocks-fe.jar:?]
at com.starrocks.load.loadv2.LoadTask.exec(LoadTask.java:60) ~[starrocks-fe.jar:?]
at com.starrocks.task.PriorityLeaderTask.run(PriorityLeaderTask.java:25) ~[starrocks-fe.jar:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_201]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_201]
at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_201]

  • 完整的报错异常栈,CPU爆满图片
    image

这个报错一般是因为导入频率太高导致的 降低并发可以解决 或者 alter table修改导入表的replicated_storage" = “true” ,变成写入一副本导入成功就成功 这个有单副本导入的功能有打开过吗 建议可以开启之后再验证下

修改导入表为 replicated_storage" = “true” 后,导入数据还是报错,然后修改导入并行度为5:async_load_task_pool_size = 5 后,导入数据没有报错了,但是CPU还是会调到占用90%左右,也是可以接受的最低并行度了,要不太少就影响导入效率了。

我看您那边晚上2.5.7版本 、建议您可以升级到2.5的最新版本 2.5.7有一些已知的大bug ,然后您可以调整下pipeline的并行度 当前默认使用的是核数的一半 可以调低一些

大佬,还是有点问题,我们执行的操作如下:
1.我们升级到了2.5.12版本,执行broker load导入的时候又有报错了,CPU占用也达到90%,报错内容如下:
TYPE:LOAD_RUN_FAIL; msg:MEMORY of Query310d35be-de61-420c-a215-a3553e80b269 exceed limit. Pipeline Backend: 10.0.11.148, fragment: 310d35be-de61-420c-a215-a3553e80b26c Used: 21640701880, LIMIT: 21474836480. Mem USAGE has exceed the LIMIT of single QUERY, You can CHANGE the LIMIT BY SET SESSION variable exec_mem_limit OR query_mem_limit.

2.我们3台BE的核数分别为48核,然后修改降低pipeline并行度,set golbal pipeline_dop = 10;执行broker load导入的时候还是有报错,报错信息跟上面的一样,CPU占用降至37%,内存占用有点提升,针对上面这个报错还调整哪些配置呢?


大佬,麻烦有空可以帮看一下2.5.12版本这个问题的解决方案?要是没有办法我们也只能回退到2.5.7版本的了

exec_mem_limit OR query_mem_limit 有调整过吗 当前dop为 10 cpu占用我理解符合您的要求 只是这导入报错了对吧?

cpu占用现在符合我们的要求,再高一些也可以接受,现在主要是导入报错,个别1000多万行,300多个字段的表单独导入也报错。exec_mem_limit OR query_mem_limit 这个两个参数没有修改过,使用默认值,如下截图所示,这个需要如何调呢?
image
image