连接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
Uh oh!
There was an error while loading. Please reload this page.
-
数据库使用的是腾讯云的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