连接mysql数据库socket中断后,skynet端感知不到的问题。 #1363
Unanswered
xuzhenyu2020
asked this question in
Q&A
Replies: 1 comment
-
#1358 中有部分讨论。 今天的 4fdf28d 可以在感知到对端关闭时及时 close fd ,不必推迟到下一次请求前。但它不像能解决这里的问题。 socket.disconnected 返回的状态是由底层的 CLOSED (收到对端 FIN) 或 ERR (写出错, 对端 RST) 消息触发的。需要排查一下为什么底层没有发出断开消息。(或对端没有发送 FIN ?) |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
数据库使用的是腾讯云的TDSQL-C(mysql兼容版)。
1.skynet端使用的是同时连接10个连接,然后每次需要执行sql语句的时候,顺序使用这10个mysql连接。
2.因为数据库这边设置了闲置断开,所以一段时间后socket会断开。
3.正常情况下,socket断开后,skynet端再次使用会自动重连socket,并且会打印“socket: disconnect detected”。
4.但是我使用的时候大概率socket不会重连,导致sql语句执行无限期阻塞。原因是socke.lua文件里面,socket.disconnected函数返回的是没有断开,实际上从mysql这边看连接已经断开了。
目前无解,这个问题卡着上线,求助大神们!!!!
Beta Was this translation helpful? Give feedback.
All reactions