arrow flight sql 是否支持workload group 隔离?内存释放动作太慢

Viewed 71

基本情况:
doris版本: 2.1.5
当前workload group: 2个
查询账号: root,当前root账号默认绑定到data_export这个wg中

测试场景:
使用arrow flight sql执行9个并发查询:
image.png

现象:
当前7个查询没有被纳入到wg 的管理,如下图所示:
image.png

查看wg的基本状态,当前的running query num 为0 :
image.png

另外一个问题:
跑完arrow flight协sql,BE内存的释放很慢,似乎存在内存泄漏问题。在doris中内存属于非常宝贵的资源,影响其他查询,出现oom的问题。

下图是be内存走势:
image.png

image.png

补充一点,我这边测试了另外一种场景,通过doris写hive外表来替代arrow flight sql抽数,发现内存的释放是很迅速的。参考下图:
image.png

3 Answers

没有测过,理论上支持的,因为 arrow flight sql 的查询和 mysql client/jdbc 发的查询走的同一套路径

如果确认 mysql client/jdbc 的查询可以绑定默认 wg,但 arrow flight sql 不行,我后面测一波修下

我们会在2.1.8 里解决这个问题。

测了下,master 和 branch-2.1 的 Arrow Flight 查询都是支持 workload group 的,上面反馈的 work load group 中 running query num 是 0 的问题,不确定是不是 2.1.5 显示的有问题,可以等用最新的 2.1.8 再试试

上面提到的两个问题

  1. workload group 没控制住内存
    可能是因为 2.1.7之前 BE arrow flight 查询结果的 arrow batch buffer 内存没有被 mem tracker 统计, 2.1.8 已解决,另外 https://github.com/apache/doris/pull/40289 这个pr修的问题也有影响

  2. 内存释放慢
    是查询结果 arrow batch 所在的 buffer control block 会在查询结束后 5 分钟释放,所以如果Arrow Flight 查询被提前终止,查询结果没有被 ADBC Client 及时取走,就要等 5 分钟后才会释放内存。 这块后面尝试 BE Arrow Flight server 接收到 Client 的 close 后主动清空结果buffer。