Maddening Intermittent Wordpress:建立数据库连接时出错

时间:2015-12-18 14:06:22

标签: mysql wordpress

我们的Wordpress网站每天都会停止响应,页面开始返回可怕的'建立数据库连接错误'。 MySQL日志中没有任何内容,我对可能导致该问题的原因感到茫然。我们没有很多网站访问者,并且该机器是中型EC2实例。任何人对如何解决这个问题都有任何想法?

3 个答案:

答案 0 :(得分:1)

这里没有很多工作要做。但是......我的微实例遇到了同样的问题。我的问题是服务器内存不足,然后mysql服务器就会停止。它会在重新启动计算机时重新启动,但它再次崩溃只是时间问题。

这是我在MySQL日志中获得的内容。

151023  6:15:44 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
151023  6:15:44 InnoDB: Completed initialization of buffer pool
151023  6:15:44 InnoDB: Fatal error: cannot allocate memory for the buffer pool
151023  6:15:44 [ERROR] Plugin 'InnoDB' init function returned error.
151023  6:15:44 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
151023  6:15:44 [ERROR] Unknown/unsupported storage engine: InnoDB
151023  6:15:44 [ERROR] Aborting

你可能想要检查类似的东西。我使用Ubuntu,默认情况下日志为/var/log/mysql/

我通过按Amazon EC2, mysql aborting start because InnoDB: mmap (x bytes) failed; errno 12设置交换文件解决了这个问题。默认情况下,AWS实例没有设置交换空间(而我在当天从Ubuntu下载的安装确实如此)。您需要手动设置它。这是方法 -

ssh到您的AWS实例中。然后:

  1. 运行dd if=/dev/zero of=/swapfile bs=1M count=1024
  2. 运行mkswap /swapfile
  3. 运行swapon /swapfile
  4. 将此行/swapfile swap swap defaults 0 0添加到/etc/fstab
  5. 阅读链接的问题以获取更多详细信息。希望有所帮助!

答案 1 :(得分:1)

我遇到了类似MySQL间歇性崩溃的问题。原来是Apache配置。机器人强行破坏了网站并最终导致Apache崩溃(检查你的日志:$ cat /var/log/apache2/access.log)。 Apache自动重启,但没有足够的备用内存来重启MySQL,因此数据库连接错误。简短的解决方法是减少Apache中的RequestWorkers数量,以更好地适应您拥有的RAM量。

您可以使用Apache2Buddy对Apache配置运行诊断。它将根据您拥有的RAM量和应用程序的大小来计算您可以运行的Apache Workers数量: $ curl -L http://apache2buddy.pl/ | perl

可能会建议您在MPM-Prefork配置中更改MaxRequestWorkers(或旧Apache系统上的MaxClients)。该文件位于我系统的/etc/apache2/mods-available/mpm_prefork.conf。将值更改为Apache2Buddy建议的值后,只需重新启动Apache,您就应该好了。

如果您想要更深入的解释,压力测试的方法或者如何阻止某些机器人流量的想法,我写了一篇关于这种情况的文章:http://brunzino.github.io/blog/2016/05/21/solution-how-to-debug-intermittent-error-establishing-database-connection/

答案 2 :(得分:0)

When I tried to install local wordpress the same error

error establishing database connection

occurred because I forget to stop the SQL and Apache which was started in xampp. I stopped it and reinstalled the wordpress for Windows and it worked.