dtm client 与 server 网络断开
如果网络可以被dtm client/server可侦测的。 则不需要使用 超时机制。
当侦测到网络故障时:
dtm server: 清理相应dtm client的活跃事务, 并广播给其他的dtm client 去清理相应故障的dtm client 发起的活跃事务; 对那些处于prepare 状态的事务, 则由后台recover线程处理。
dtm client: 唤醒正在等待的事务,并设置相关的错误状态。然后尝试重新连接到dtm server.
mysql keep alive timeout
为了处理datanode 主端口异常,在mysql server中新加入了以下系统参数,作为会话级别的 tcp keep alive参数。
| mysql keep alive 参数 | 默认值 |
|---|---|
| net_keep_alive_interval | 2 |
| net_keep_alive_probes | 5 |
| net_keep_alive_timeout | 20 |
| net_keep_alive_user_timeout | 50000 ms |
Sqlnode到Datanode连接的keep alive user timeout
| 连接池连接 keep alive 参数 | 默认值 |
|---|---|
| greatdb_connection_keepalive_user_timeout | 30000ms |
在集群sqlnode端,连接池中连向datanode的session使用下列参数作为datanode端的tcp keep alive参数:
net_keep_alive_interval = 2 net_keep_alive_probes = 3 net_keep_alive_user_timeout = greatdb_connection_keepalive_user_timeout
在集群上,此参数对查询含大量数据的分区表影响较大:当某个分区数据过多时,sqlnode会长时间不接收位于其它datanode的分区的数据。其它datanode向sqlnode发送数据受阻且超过此参数时,datanode会关闭连接,最终sqlnode执行的语句会报错"Execute backend SQL on node * lost_connection"。
注意:修改此参数后,需要刷新SN到DN的连接池。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




