doris 遇tablet writer write failed, tablet_id=27306172, txn_id=28573520, err=-235问题解决
我们是通过sql的方式使用flink实时解析binlog日志到doris,但是当并行度提高或者连续插入500条以上数据时就会导入失败,错误提示如下:
detailMessage = close wait failed coz rpc error. NodeChannel[12676-10003] add batch req success but status isn't ok, load_id=c460f48152c24b65-8d4a341254038ded, txn_id=738568, backend id=10003:8060, errmsg=tablet writer write failed, tablet_id=18117, txn_id=738568, err=-235"
之后排查发现是对应tablet的数据版本超过了最大限制500,我们目前的解决办法为,增大此值,并监控此指标设置合适的值,以下是动态设置be参数:
# 查看be配置
http://be-ip:be-port/varz
# 默认配置为max_tablet_version_num=500
curl -X POST http://be-ip:be-port/api/update_config?max_tablet_version_num=2000
此问题doris官网也介绍了可以优化tablet 的 compaction,提高压缩效率,减少版本数量
# 一个 CC 任务最多合并多少个数据版本,默认值 max_cumulative_compaction_num_singleton_deltas=1000
# tablet 的版本数量将会在 1-N 之间浮动,N小则版本数量相对稳定
curl -X POST http://be-ip:be-port/api/update_config?max_cumulative_compaction_num_singleton_deltas=500
附Apache Doris相关博文:
Doris Compaction调优连接
Apache Doris Grafana 监控指标连接