数据库其它

关注公众号 jb51net

关闭
首页 > 数据库 > 数据库其它 > Doris报错:failed to send brpc when exchange

Doris报错:failed to send brpc when exchange的解决过程

作者:fzip

Doris中出现"failedtosendbrpcwhenexchange"错误通常是由于BRPC通信异常导致的,可能的原因包括网络问题、BRPC配置不合理、节点负载过高、数据倾斜、节点状态异常和版本兼容性问题,通过排查网络、调整BRPC参数、优化SQL和表结构等方法可以解决该问题

Doris 中出现 “failed to send brpc when exchange” 错误,通常与 Doris 的分布式执行框架中 BRPC 通信异常相关,主要发生在查询执行过程中不同节点(FE/BE 或 BE 之间)通过 Exchange 算子传递数据时。

可能的原因及解决方案

1. 网络问题

节点间网络不通或延迟过高

结果

2. BRPC 配置不合理

be.conf 中适当调大 BRPC 相关超时参数:

brpc_arrow_flight_work_pool_max_queue_size=-1
brpc_arrow_flight_work_pool_threads=-1
brpc_connection_check_timeout_ms=10000
brpc_heavy_work_pool_max_queue_size=-1
brpc_heavy_work_pool_threads=-1
brpc_idle_timeout_sec=-1
brpc_light_work_pool_max_queue_size=-1
brpc_light_work_pool_threads=-1
brpc_max_body_size=3147483648
brpc_num_threads=256
brpc_port=8060
brpc_socket_max_unwritten_bytes=-1
brpc_streaming_client_batch_bytes=262144

检查是否因连接数过多导致失败,可调整 grpc_threadmgr_threads_nums 4096 等参数。

结果

3. 节点负载过高

BE 节点内存/CPU 耗尽

结果

4. 数据倾斜或查询计划不合理

Exchange 算子处理数据量过大

结果

5. 节点状态异常

BE 节点心跳异常或已下线

结果

6. 版本兼容性问题

若近期升级过 Doris 版本,可能存在 BRPC 协议不兼容的情况,建议:

结果

排查步骤建议

  1. 查看 FE 日志(log/fe.INFO)和对应 BE 节点的日志(log/be.INFO),定位具体是哪个节点间的通信失败。
  2. 检查涉事节点的网络和资源状态。
  3. 针对频繁出现该错误的查询,优化其 SQL 或表结构。
  4. 逐步调整 BRPC 相关参数,观察是否改善。
  5. 通过be.INFO查看每个query的实例数量:

cat ./be.INFO |grep "total fragment num on current host"|awk '{print $1"-"$2,$6,$16,$23}'|awk -F '[ ,]' '$4>100 {print $0}'

上千的特别大概率都是不合理的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文