我们的Wordpress网站每天都会停止响应,页面开始返回可怕的'建立数据库连接错误'。 MySQL日志中没有任何内容,我对可能导致该问题的原因感到茫然。我们没有很多网站访问者,并且该机器是中型EC2实例。任何人对如何解决这个问题都有任何想法?
答案 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实例中。然后:
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
/swapfile swap swap defaults 0 0
添加到/etc/fstab
阅读链接的问题以获取更多详细信息。希望有所帮助!
答案 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.