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


MySQL is crashing with the error "Lost connection to MySQL server at 'reading initial communication packet', system error: 111

由于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 $

任何帮助将不胜感激。

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

它也不能是数据库(模式(,因为您还没有达到这一点。(连接成功后选择数据库(

确保:

  • MySQL 二进制文件是最新版本,或者至少是通过分发包管理提供的最新版本(MySQL 使用的所有库都相同(
  • 服务器中的RAM是健全的,也许运行内存检查
  • 服务器中的硬盘正常,可能运行智能实用程序或完整磁盘扫描