less than low water mark

Viewed 120

doris kubernetes部署,3个be节点,2c4g,因为只是测试所以资源并不高,现在数据只有1w多,但是执行查询的时候报错:
Error 1105 (HY000): errCode = 2, detailMessage = (doriscluster-helm-be-2.doriscluster-helm-be-internal.default.svc.cluster.local)[MEM_ALLOC_FAILED]Create Expr failed because [E11] Allocator sys memory check failed: Cannot alloc:64, consuming tracker:<Query#Id=774b5d1d2f524be3-bc1d5909b75f6720>, peak used 0, current used 0, exec node:<>, process memory used 2.11 GB exceed limit 3.60 GB or sys available memory 370.45 MB less than low water mark 409.60 MB.

我看官网最低水位线是max_sys_mem_available_low_water_mark_bytes和MemTotal * 10%的最小值,4g应该就是409.6M,这个值在资源不变的情况下可以改吗?或者有什么办法避免上面的问题

2 Answers

@volcano be.conf 中增加 enable_use_cgroup_memory_info=false 重启 BE 再试试

Doris 2.1.4 上 cgroup 获取可用内存有问题,在 2.1.5 已修复,见这个pr:https://github.com/apache/doris/pull/36966

cgroup /memory.usage_in_bytes ~= free.used + free.(buff/cache) - (buff)
cgroup 的可用内存 = /memory.limit_in_bytes - /memory.usage_in_bytes + memory.meminfo["Cached"]

Doris 2.1.4 在除 CentOS 外的其他机器上,memory.meminfo["Cached"]获取的有问题,所以计算的可用内存比实际少