1.show global variables like '%query_timeout%'确认下这个是300吗
2.确认下客户端或者中间代理层是否有配置空闲链接清理时间是300s的
这个问题原因是客户端或者服务端的空闲链接配置不一致,导致链接被清理了
这个确认了不是300,是已经修改的3600
客户端或中间件我再确认下
客户端或者中间代理层并没有配置空闲链接清理时间是300s
还是会报连接中断
[ERROR] 2023-04-06 01:10:26.235 +0000 - execute sql error: Communications link failure
The last packet successfully received from the server was 300,090 milliseconds ago. The last packet sent successfully to the server was 300,091 milliseconds ago.
[ERROR] 2023-04-06 01:10:26.235 +0000 - sql task error
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet successfully received from the server was 300,090 milliseconds ago. The last packet sent successfully to the server was 300,091 milliseconds ago.
看着使用的datax?datax的任务配置发下
你的用法有问题,用starrockswriter,不要用mysqlwriter,具体参考 https://docs.starrocks.io/zh-cn/latest/loading/DataX-starrocks-writer
另外还有一个问题读pg的超时是不是300s,是的话就改大
嗯嗯,用streamload方式写入会快很多,但这个300s报超时和一开始的问题是不是一致的。读pg看了也不存在300s超时,感觉还是StarRocks 300s写入的问题
我们也遇到一样的问题,用SQL语句执行的时候超过300s就报错,没有使用连接池、代理中间件等等,就是直接StarRocks
请问你们最终解决这个问题了吗?
利用set hint的方式去解决这个问题,不要直接通过会话set query_timeout,类似insert overwrite table AS SELECT /*+ SET_VAR(query_timeout=4000000) */ * from dual;
感谢回复
但是我们试过hint,没用。还有其它办法吗?
你的报错是什么,应该不是显示query timeout的报错吧,用的JDBC连接,可以加上一些jdbc的超时参数看看,感觉不一定是SR的问题吧
报错信息如下:
Communications link failure The last packet successfully received from the server was 300,644 milliseconds ago. The last packet sent successfully to the server was 300,644 milliseconds ago
本地DBeaver直连StarRocks,无网络代理、无连接池
作业编排调度系统(例如海豚调度、Oozie、azkaban之类)当中的SQL任务执行也是报这种错误
这个看上去并不像starrocks中的queryTimeout异常,按理说如果是sr的queryTimeout,应该会有对应的quryTime异常信息才对,看下连接jdbc那里是否可以设置socketTimeout,loginTimeout这些参数信息呢