MySQL正在崩溃错误"在读取初始通信数据包时失去与MySQL服务器的连接,系统错误:111

时间:2014-12-01 18:09:42

标签: php mysql pdo

由于MySQL存在问题,我的网站随机崩溃,我无法确定它。首先,崩溃本身很少发生(也许每月一次)所以我无法复制它。因此,我不知道究竟是什么导致了这个问题。

多年前我第一次构建网站时,我使用mysql_调用来连接数据库。我了解了我的方法错误并开始使用PDO。不幸的是,有很多代码使用了mysql_调用,而我还没有找到替换它们中的每一个。所以,我的网站混合了PDO和mysql_调用。

当站点连接到数据库时,它首先调用mysql_connect(),然后通过包装器连接到PDO。

当我使用mysql_connect()时,我收到的错误发挥作用。我已经挖了日志,我找不到错误的具体原因。一旦发生,它就会崩溃MySQL服务器,从而导致网站崩溃。我甚至不能认为mysql_是问题,因为它甚至在它到达PDO包装器之前就崩溃了。它可能只是一个MySQL连接问题。

我已经做了一些搜索,看起来有些人建议我在my.cnf中修改bind-address,我已经完成了。

我也浏览了网站并尝试删除尽可能多的mysql_调用。

这是一些示例日志文件输出,其中包含一些信息:

Error connecting to database. Reason: Lost connection to MySQL server at 'reading initial communication packet', system error: 111

[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Warning:  Creating default object from empty value in database.php on line 89
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Fatal error:  Call to a member function setErrorCallbackFunction() on a non-object in database.php on line $
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Warning:  Creating default object from empty value in database.php on line 89
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Fatal error:  Call to a member function setErrorCallbackFunction() on a non-object in database.php on lin$
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Warning:  mysql_connect(): Lost connection to MySQL server at 'reading authorization packet', system error: 0 in $
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Warning:  Creating default object from empty value in database.php on line 89
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Fatal error:  Call to a member function setErrorCallbackFunction() on a non-object in database.php on line $
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Warning:  Creating default object from empty value in database.php on line 89
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Fatal error:  Call to a member function setErrorCallbackFunction() on a non-object in database.php on lin$
[Mon Jun 09 13:01:29 2014] [error] [client ****] PHP Warning:  mysql_connect(): Lost connection to MySQL server at 'reading authorization packet', system error: 0 in $

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果MySQL服务器崩溃 ,则此问题是由MySQL守护程序本身而不是您的客户端代码引起的。

它也不是数据库(架构),因为你没有达到这一点。 (成功连接后选择DB)

确保:

  • MySQL二进制文件是最新版本或至少是通过您的分发包管理发布的最新版本(对于MySQL使用的所有库都相同)
  • 服务器中的RAM是健全的,也许是运行memcheck
  • 服务器中的硬盘是健全的,可能运行智能工具或完整磁盘扫描