SYN_SENT 中连接到 mysql 服务器

SYN_SENT 中连接到 mysql 服务器

过去几天,我们在应用服务器和数据库服务器 (Mysql) 之间遇到了一个奇怪的问题:从应用服务器到数据库服务器的连接处于挂起SYN_SENT状态,之后我们无法通过 mysql 端口 (3306) 与数据库服务器建立任何连接。当我们检查netstat数据库服务器上的输出时,它处于挂起SYN_RECV状态。

我能弄清楚的是,mysql 服务器正在接收 SYN 请求并做出响应,但它无法到达客户端,因此SYN_RECV在服务器端和SYN_SENT客户端都无法到达。我认为SYN_SENT状态应该在一段时间后恢复,因此,其他数据库连接到同一服务器的尝试不应该挂起。

有人知道我们该如何解决这个问题吗?

设置详情:

应用程序服务器:RHEL 5.4,内核版本 = 2.6.18-164.el5,x86_64

数据库服务器:Mysql 版本:5.1.49 RHEL 5.4,内核版本 = 2.6.18-164.el5,x86_64

答案1

我在晚上遇到了这个问题。看起来你和目标主机之间的一些路由器无法正常工作tcp_sack。解决方案是禁用它/etc/sysctl.conf

net.ipv4.tcp_sack = 0

但这对于服务器来说非常糟糕,因为它会减慢 TCP 速度连接。你应该滥用你的提供商

相关内容