我在基于美国的数据中心有许多 linux 服务器。服务器由托管公司安装,并运行 fedora 核心。
我们遇到了连接断开的问题。问题似乎是,当我们在一段时间不活动后尝试连接到其他服务器时,第一次连接尝试会失败,有时第二次会失败。但是,在那之后连接成功并且它工作了一段时间。mysql 连接和原始套接字连接都会发生这种情况,但似乎只在连接到我们的某些服务器时才会发生。令人困惑的部分是,我们看到不同行为的一些服务器具有相同的硬件配置和软件。例如,当连接到名为 mysql2 的服务器时会发生这种情况,但不会发生在名为 mysql3 的服务器上。这些服务器是同时安装的,规格相同。
该问题可以在一定程度上可靠地重现,但只有在等待十五分钟到半小时之后。这使得诊断变得困难,甚至更难,因为我不确定要寻找什么。
我意识到连接有时会失败,我们应该编写应用程序来弥补这一点,但这些服务器都在同一个数据中心。如果两台服务器有一段时间没有通信,为什么会很重要?
有人知道可能是什么原因造成的吗?是服务器配置问题还是网络问题,我应该联系托管公司。我告诉他们要寻找什么?不幸的是,我们的经验是,除非我们给他们详细的指示,否则支持人员不会深入调查问题。
编辑:MySQL 似乎至少在连接被删除之前收到了连接:
mysql> show status like 'abort%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Aborted_clients | 501 |
| Aborted_connects | 184 |
+------------------+-------+
2 rows in set (0.00 sec)
Edit2:似乎状态防火墙毕竟是问题所在。清除 iptables 似乎可以解决问题。
iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD