【已解决】高频insert引发PUBLISH VERSION队列积压

Viewed 99

【版本】V1.2.6
【现象】执行了较高频率的insert后,会出现个别BE PUBLISH_VERSION队列持续积压,无法下降的情况。如果不尽快采取措施,重启该BE,就可能进一步触发FE 转为VISIBLE状态失败,三副本中只有一个BE PUBLISH成功,其他两个BE均因队列积压没有成功。一段时间后成功的BE执行compaction,FE此后查询会报错 E-230:version already has been merged
【问题】高频insert是怎么导致PUBLISH_VERSION队列积压的,为什么有的BE会出现,有的不会出现呢?
【注明】目前已知该现象是高频insert引起的,已人为控制insert频率。但还是想知道导致积压的原理,谢谢~

1 Answers
  1. 首先在 Doris 中一般是不建议进行高频insert 操作的,建议改成 streamload 的方式,可以参考demo 实现方式 https://github.com/apache/doris/tree/master/samples/stream_load/java

  2. version already has been merged 意思是

    1. tablet并没有出现version不连续的情况;
    2. BE tablet的max_version >= 查询指定的version; 说明是查询需要的version已经被compaction merge掉了。
    3. 此时需要手动去grep tablet_id 判断 version 版本,通过时间进行判断,查询的version是否还是旧version,如果查询的version 横跨的时间太长的话,可能就有问题了,可以通过 curl be_ip:http_port/api/compaction/show?tablet_id=xxxx 查看最新的数据分布以及version信息
    4. 1.2 版本这里有过 publish 线程卡住 :原因是部分节点publish慢或者卡住,会拖累visible version更新。其他publish 正常的节点就会compaction掉,向它们查询时,就会报230,这个在1.2.8+已经修复了
    5. 2.0.3 以下版本有个事务的bug 也会出现类似报错,也已经在 2.0.3+ 版本中 fix了