doris任务跑批失败,请问这个失败原因是什么?有什么好的解决方法吗?

Viewed 8

执行SQL脚本失败!当前数据源为:doris.Error executing: DELETE FROM sjptkf_db.ADS_BFS_BTA_REDEEMDETAIL WHERE CFM_DATE=20260425 . Cause: java.sql.SQLException: errCode = 2, detailMessage = (10.202.5.127)[CANCELLED]Process memory not enough, cancel top memory used load: <Load#Id=ca847ffdd9bb4776-8fa05b5c68408411> consumption 30.22 KB, backend 10.202.5.127, process memory used 23.20 GB exceed limit 56.32 GB or sys available memory 2.92 GB less than low water mark 3.13 GB. Execute again after enough memory, details see be.INFO.

1 Answers

这个问题我看在社群群里也问过了。

  1. 进程内存使用了 23.2GB:process memory used 23.20 GB
  2. 超出了内存限制:exceed limit 56.32 GB or sys available

从报错中能看出来,实际上,这个BE是有混合部署的,有其他服务在和BE争抢内存资源。

首先 Doris 不建议混合部署,就是为了方式出现资源抢夺的情况。
其次,这里两个思路:

  1. 查看BE内存监控,看看BE常驻内存是否比较高。如果常驻内存比较高的话,看看每个BE上的tablet数量是不是比较多。是不是有一些空分区,创建了很多的tablet,导致元数据很多,占用了一定资源。
  2. 如果常驻内存不高,报错偶尔出现,出现的时候有一些大任务在占用资源,那么就考虑大任务是否切分,使用workload group 资源队列进行限制。
  3. BE独立部署。