三副本配置下高可用失败,导入和查询数据出现异常

Viewed 38

集群配置:66台BE节点,64C400G15T,5台FE节点16C32G500G,CPU为飞腾,系统为Kylin V10Sp2
Doris版本:2.1.4(暂时无法进行升级)
问题描述:
集群于某一时间点,部分表出现无法导入数据和无法查询的情况,返回异常信息为

执行SQL失败:"errCode = 2, detailMessage = (xx.xx.xx.xx)[INTERNAL_ERROR)Failed to get query fragments context Query may betimeout or be cancelled. host: xx.xx.xx.xx"

随后对该节点进行重启,再次查询时另一节点再次出现该异常,随即对另一节点进行重启。此时集群恢复可用,表能够正常查询。三十分钟后,查询时重启的两台节点又返回上述异常信息,随即对节点进行下线处理。下线后,第三台节点查询时出现如下异常返回信息:

执行SQL失败:"errCode=2,detailMessage =(xx.xx.xx.xx)[CANCELLED]Process has no memory available, cancel top memory usedquery: query memory tracker consumption 516.00 KB, backend25.19.227.51 process memory used 9.19 GB exceed limit 322.97 GB orsys available memory 2.88 MB less than low water mark 1.60 GB. Executeagain after enough memory, details see be.lNFO."

服务器监控中该台服务器内存正常,随后再查询该台服务器返回如下异常:

执行SQL失败:"errCode = 2, detailMessage = (xx.xx.xx.xx)[INTERNAL_ERROR)Failed to get query fragments context Query may betimeout or be cancelled. host: xx.xx.xx.xx"

对该节点下线后,整个集群恢复可用状态。

1 Answers

https://github.com/apache/doris/pull/36966 应该是这个已知的问题,推荐升级了

或者,2.1.4 上可以在 be.conf 中增加 enable_use_cgroup_memory_info=false 然后重启be,绕过这个问题
或者动态改 http://xxxx:8040/api/update_config?enable_use_cgroup_memory_info=false (动态改,重启后就失效了哈)