我有一个MySQL数据库,它完全停止接受来自web服务器的连接。因此,我进入服务器,并开始检查它的生命体征。硬盘有大量的开放空间,还有大量可用的内存和交换空间。没有东西占用CPU (接近100%空闲)。我甚至在本地连接到MySQL,并运行了几个查询,没有任何问题。但是显示PROCESSLIST只显示了我自己的联系,没有其他。
最糟糕的是,在MySQL日志中,即使是远程错误也没有与服务器不可用性相吻合的错误。
在web服务器上,我看到了一个错误:“在查询期间丢失了到MySQL服务器的连接”,随后出现了一堆"MySQL服务器已经消失“的错误。
服务器上只有一个接受网络连接的应用程序,我杀死了这个应用程序(如果它持有太多打开的连接或其他什么的话),但它没有帮助。
最后,我刚刚重新启动了MySQL进程,现在一切都恢复正常了。
在这种情况下我还应该查些什么?知道有什么问题吗?我怎样才能证实这就是问题所在呢?
发布于 2011-01-07 18:46:42
作为上述答复,请验证对阻止3306的iptables的任何更改。另外,确保您的/etc/my.cnf没有被覆盖,可能是通过分发包更新。您不应该在米舍尔德下看到跳过网络指令。
发布于 2011-01-07 18:35:44
您应该检查进程是否在正确的接口上侦听端口3306 (它仅绑定到127.0.0.1,还是绑定到主机ip或*)。您还应该检查进程打开了多少个文件(您可能遇到了ulimit)。您还应该确保您的iptables规则没有任何改变,从而导致其阻塞(不过,除非您正在使用一些高级模块,否则重新起草不会有帮助)。还请确保您没有使用可能正在更新tcp包装规则的东西,如拒绝主机(check /etc/host.*-尽管如此,这不太可能是通过重新启动来修复的)。下次发生这种情况时,请在myswl服务器和应用程序服务器上启动wireshark,并在端口3306上筛选,同时尝试通过网络连接到mysql。
https://serverfault.com/questions/220353
复制相似问题