cse_engineer 发表于 2024-3-13 17:21:12

tpch 1T,稳定出现 Secondary engine operation failed 报错;

现象:

数据已经都导入,并且load到 rapid引擎当中。
参数:
rapid_worker_threads = 16
set global rapid_hash_table_memory_limit = 80;
set global rapid_memory_limit = 190737418240

+ 出现如下异常现象:
运行脚本,某一条开始失败,失败之后尝试走rapid引擎查询会报错:
ERROR 3889 (HY000): Secondary engine operation failed. use_secondary_engine is FORCED but query could not be executed in secondary engine.

如果对所有的表都 load一次,之后可以继续查询,即便实际上load报错失败(毕竟此前已经把数据导入到AP引擎当中了)。


+ 已发现在如下两个条件下可以稳定触发异常现象:

run-tpch.sh 脚本,
1,如果将22条语句循环次数改为2, 会在21条跑到第二次开始报错:
报错信息为:


ERROR 2013 (HY000) at line 2: Lost connection to MySQL server during query
ERROR 2003 (HY000): Can't connect to MySQL server on '10.229.31.45' (111)


此后尝试利用ap引擎查询,会出现异常现象。

2, 将22条语句的循环次数改为1,会在22条运行时报错。
ERROR 2003 (HY000): Can't connect to MySQL server on '10.229.31.45' (111)

top观察发现内存占用内存不断上升,直到进程消失,然后再自动拉起,消失同时脚本报错。


+ 解决方案:

set global rapid_hash_table_memory_limit = 60;
set global rapid_memory_limit = 150737418240;

都可以。



yejr 发表于 2024-3-13 17:26:03

rapid_hash_table_memory_limit这个值设置太高了,很容易发生OOM。
一般在较为复杂的(多层JOIN、子查询)的场景下,最高不超过30。

详见参考:https://greatsql.cn/docs/8032-25/user-manual/5-enhance/5-1-highperf-rapid-engine.html#_5-4-%E9%83%A8%E5%88%86%E5%86%85%E5%AD%98%E5%8F%82%E6%95%B0%E7%9A%84%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E

yejr 发表于 2024-3-13 17:27:15

另外,一般建议设置 SET use_secondary_engine = ON 就好,不要设置为 FORCED,否则总是强制使用secondary engine,但如果无法使用时,则会报错。

详见文档:https://greatsql.cn/docs/8032-25/user-manual/5-enhance/5-1-highperf-rapid-engine.html#_2-4-%E5%88%A9%E7%94%A8rapid%E5%BC%95%E6%93%8E%E6%8F%90%E5%8D%87%E6%9F%A5%E8%AF%A2%E6%95%88%E7%8E%87
页: [1]
查看完整版本: tpch 1T,稳定出现 Secondary engine operation failed 报错;