Doris集群通过JDBC高并发写入数据时,报错“E-235”并提示“version count:xxx,exceed limit: xxx”如何处理?
问题现象
通过JDBC向Doris集群并发写入数据时,客户端写入失败,并出现图片中报错信息:报错E-235并提示version count:xxx,exceed limit: xxx。
分析原因
由于用户写入数据频率过高,超过了后台数据compaction的速度,导致版本堆积且超过了版本的最大限制,集群拒绝写入数据。则报错E-235并提示version count:xxx,exceed limit: xxx。
tablet数据版本是由BE参数“max_tablet_version_num”控制,默认值为2000。如上述图中所示报错,表示ID为172732的tablet数据版本超过了2000,达到了2063。
处理办法
- 使用ssh工具连接Doris集群,请参考连接Doris集群。
- 执行以下命令查看报错tablet详情。
show tablet 172732;
- 执行步骤命令运行结果中DetailCmd字段值,查看表各副本的情况。执行结果中的“VersionCount”即表示当前版本数量。如果发现某个副本的版本数量过多,则需要降低数据写入的频率或者暂停写入,并观察版本数量是否下降。
SHOW PROC '/dbs/xxx/xxx/partitions/...';
- 如果VersionCount长时间没有下降,请联系服务技术人员检查BE节点的INFO日志,搜索tablet id以及Compaction关键词,检查Compaction是否正常运行。