Magento MySQL已消失错误


14

我在Magento CE 1.7.0.2上遇到了很多奇怪的问题。在正常操作期间,该站点有时会在前端和后端产生Magento错误页面(处理您的请求时出错)。查看关联的报告,我看到以下消息:

"SQLSTATE[HY000] [2006] MySQL server has gone away"

有时(但很少)报告消息将显示为:

 Connection reset by peer

我查看了var> log> system.log,该MySQL has gone away错误伴随以下内容:

Warning: PDO::__construct(): MySQL server has gone away  in /var/www/html/domain.com/live/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 129
Error while reading greeting packet. PID=1863  in /var/www/html/domain.com/live/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 129

除此之外,每个请求以及这些MySQL has gone away错误似乎都发生以下错误:

 Warning: include(File.php): failed to open stream: No such file or directory  in /var/www/html/domain.com/live/lib/Varien/Autoload.php on line 93
 Warning: include(): Failed opening 'File.php' for inclusion

我看了大部分关于此的文章,并修改了数据库参数,直到母牛回家,但错误仍然存​​在。

在遵循有关编译器的另一个QnA之后,我注意到管理页面系统>工具>编译完全空白。我认为这些都是相关的错误,但是对调试或原因的任何深入了解都将非常有帮助。

如果这前后矛盾,我深表歉意。我已经醒了大约42个小时,所以请您进行任何澄清。谢谢。

-更新-

我的服务器堆栈为清楚起见:

PHP 5.5.4 (PHP-FPM)
Nginx 1.4.2
MySQL 5.5.33

-更新-

对我来说(睡了一会儿)我从未指定过-PHP代码库和MySQL数据库位于单独的硬件服务器上-了解您是否会帮助我非常重要!我道歉。


1
您是否正在使用持久数据库连接?如果是这样,请尝试禁用它们。我还要检查mysql日志以查看是否存在错误,或者它实际上是在重新启动而不是只是断开连接。
davidalger

大卫(Thx David),拖着MySQL日志,错误发生时永远不会命中数据库。我正在使用持久连接,禁用并没有帮助:(
Jongosi

1
您是否认为连接不良。导致该错误的原因是DB从未收到msg。尝试使用local.xml的连接信息进行调试,以调用mysqli函数。走着瞧吧。
SH-

谢谢,似乎已解决我在编辑本地文件时

Answers:


9

这主要是由于以下两个原因之一

  1. 服务器超时并关闭了连接。
    修复:尝试wait_timeout在mysqld的my.cnf/my.ini 配置文件中增加变量。
  2. 服务器丢弃了不正确或太大的数据包。
    修复:通过增加值增加的最大数据包大小限制max_allowed_packetmy.cnf/my.ini 文件。

如果您尝试获取时间太长或不适用的文件,请检入文件。


Thx Anshu,我关注的是MySQL查询日志,并且数据库从未被请求打中。另外,如果我重新启动服务器,则有时在服务器联机后20秒钟内会发生错误-太短了,即使是默认设置也无法超时。我设置max_allowed_packet为2G和wait_timout86400,仍然没有帮助。
Jongosi

请检查数据库连接是否正确,请检查您的app / etc / local.xml文件
Anshu Mishra,

Thx Anshu,是的,没错-大约有68%的请求发生连接
-Jongosi

6

问题解决了!感谢所有人的帮助。即使我们禁用了Web主机,这也是Web主机的硬件防火墙问题。

正如1&1的服务器团队确认的那样,硬件防火墙已正确配置,但是大约25%的时间它们错误地拦截了文件服务器和db服务器之间的有效流量。

我们已经配置了iptables并完全关闭了硬件防火墙。现在有100%的可用性。


2
天啊!零星的防火墙……一定喜欢这种问题。很高兴你把事情解决了。:)
davidalger

同样的问题在这里,看来您的解决方案也将为我们解决。也要谈1&1。支持有任何帮助吗?我可以联系您吗?推特?Facebook的?请查看我的个人资料以了解详细信息。谢谢
webDEVILopers 2015年

2

我遇到了Magento 2.1的相同问题,并且在“ MySQL消失”过程中,我的mysql错误日志多次显示以下错误:

...[Warning] File Descriptor 1228 exceeded FD_SETSIZE=1024

要潜在地解决此问题,请先使用来检查open files$ ulimit -n,在我的情况下为256

其次,table_open_cache = {that ulimit -n value}在中的[mysqld]部分下添加my.cnf

现在重新启动MySQL,希望您能重新开始行动。

注意:我正在OS X El Capitan上以PHP 7.1和M​​ySQL 5.7.15在本地使用Homebrew构建本地运行Magento 2.1。但是我敢打赌,该解决方案也可以在较旧或不同的设置下使用。


1

编辑您的Magento文件夹中的app / etc / local.xml文件,将主机的条目替换为“ 127.0.0.1”而不是“ localhost”。


该数据库位于单独的硬件服务器上,因此使用了MySQL服务器的IP地址。
Jongosi

1

在两台服务器之间迁移大型数据库时遇到相同的错误。

在我的本地(目标)服务器上的mysql配置文件(/etc/mysql/my.cnf)中临时添加以下内容,然后重启mysql(服务mysql restart),为我解决了这个问题:

max_allowed_packet      = 160M
wait_timeout            = 28800000
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.