【发布时间】:2016-03-25 06:31:40
【问题描述】:
每隔一天左右,我们的 Wordpress 网站就会停止响应,页面开始返回可怕的“建立数据库连接时出错”。 MySQL 日志中没有任何内容,我不知道是什么导致了这个问题。我们没有很多站点访问者,并且机器是一个 Medium EC2 实例。有人对如何解决此问题有任何想法吗?
【问题讨论】:
-
检查错误日志,也是 - 这是一天中的相似时间吗?您是否在使用缓存(wp 超级缓存等)?
每隔一天左右,我们的 Wordpress 网站就会停止响应,页面开始返回可怕的“建立数据库连接时出错”。 MySQL 日志中没有任何内容,我不知道是什么导致了这个问题。我们没有很多站点访问者,并且机器是一个 Medium EC2 实例。有人对如何解决此问题有任何想法吗?
【问题讨论】:
这里没有很多工作要做。但是......我的微型实例也有同样的问题。我的问题是服务器一直内存不足,然后 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 实例。那么:
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
/swapfile swap swap defaults 0 0 到/etc/fstab
阅读链接的问题了解更多详情。希望对您有所帮助!
【讨论】:
我遇到了 MySQL 间歇性崩溃的类似问题。原来是Apache配置。机器人对网站进行暴力破解,最终导致 Apache 崩溃(检查您的日志:$ cat /var/log/apache2/access.log)。 Apache 自动重启,但是没有足够的空闲内存来重启 MySQL,因此出现数据库连接错误。简短的解决方法是减少 Apache 中的 RequestWorker 数量,以更好地适应您拥有的 RAM 量。
您可以使用 Apache2Buddy 对您的 apache 配置运行诊断。它会根据你拥有的 RAM 量和应用程序的大小来计算你可以运行多少 Apache Worker:
$ 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/
【讨论】:
当我尝试安装本地 wordpress 时同样的错误
建立数据库连接时出错
发生是因为我忘记停止在 xampp 中启动的 SQL 和 Apache。我停止了它并为 Windows 重新安装了 wordpress 并且它起作用了。
【讨论】: