Doris2.0.3 BE节点常驻内存比较高相关问题

Viewed 106

当前使用版本:Doris 2.0.3

BE节点内存配置:64G

存在问题:
当前集群随着使用时间增长,BE节点的常驻内存越来越大,由之前常驻均值10G到当前的常驻均值30G,这就导致查询落到BE节点可使用内存变少,查询显示节点内存超限的频率越来越高。
image.png

排查思路:
1、查看BE节点mem_tracker相关信息,发现Type为global占用内存较多
image.png
2、查看mem_tracker?type=global相关信息,发现label为Orphan占用内存较多,说明当前有大量内存没有准确统计
image.png
3、查看BE节点日志,除了常规的query\load相关的日志外,主要就是大量的vertical compaction、cumulative compaction以及segment和old version 删除操作,怀疑是部分实时表开启部分列更新导致的资源占用

问题:
1、BE节点mem_tracker页面上,为什么Type=query的Current Consumption(Normalize)为负值?
2、BE节点label为Orphan占用内存的部分,除了重启BE,如何设置相关参数主动周期性的释放占用内存?
3、关于表的部分列更新长时间占用内存、CPU的问题,有没有相关参数可以对部分列更新使用的资源上线做个约束?主动释放BE内存,对正在执行的部分列更新的表有何影响?

1 Answers

1、BE节点mem_tracker页面上,为什么Type=query的Current Consumption(Normalize)为负值?
A:负值是版本缺陷,新版本这块的统计值会进行优化,比如稳定版本2.0.14或2.1系列的2.1.5

2、BE节点label为Orphan占用内存的部分,除了重启BE,如何设置相关参数主动周期性的释放占用内存?
A:

  1. orphan高,可能是因为元数据增长,以及缓存的一些全局变量
  2. 可以看看元数据相关指标值多大 beip:8040/metrics #
    doris_be_all_segments_num
    doris_be_all_rowsets_num

3、关于表的部分列更新长时间占用内存、CPU的问题,有没有相关参数可以对部分列更新使用的资源上线做个约束?主动释放BE内存,对正在执行的部分列更新的表有何影响?
A:这个暂无,可以考虑结合workload groupresource group进行资源隔离