0

我们有托管在物理服务器上的 mysql-server(5.5.47)。它监听外部互联网接口(限制用户访问),从不同地方集中使用的mysql服务器(我们使用不同的库与mysql通信)。但有时整个 mysql 服务器(或网络)卡住并停止接受连接,并且客户端因 etimedout(connect)/timeout(recv)而失败,甚至从服务器直接连接到 mysql 而 mysql cli 不起作用(卡住而没有任何响应 - 似乎尝试建立连接)。第一个想法是它与 tcp backlog 有关,所以 mysql backlog 增加了——但这根本没有帮助。

问题不可重复,所以上次发生此问题时,我们会嗅探流量,以及我们得到的结果:

http://grab.by/STwq — 截图

*.*.27.65 — it is client
*.*.20.80 — it is mysql server

从会话中我们可以假设建立了 tcp 连接,但是服务器向客户端重新传输 SYN/ACK(从转储中我们看到服务器接收到 ACK,为什么要重新传输?),但在正常情况下,mysql 必须在连接后生成初始化数据包并发送给客户端已确立的。它只是来自 1 个会话的屏幕,但所有其他会话大多相同,SYN -> SYN/ACK -> ACK -> 并且服务器重新传输 SYN/ACK 直到 retries_count。

重启mysql后,重启后立即恢复正常。所以不确定它与网络或mysql有关。

任何想法都是合适的。

谢谢!

4

0 回答 0