MySQL 需要很长时间才能加载(仅在使用 WP 时)

MySQL 需要很长时间才能加载(仅在使用 WP 时)

我不确定发生了什么,但有一段时间我在本地 Ubuntu 机器上使用我的开发网站(在 VM 上运行)时遇到了这个问题。该网站在 Wordpress 实例上运行,使用 MySQL 设置为在单独的文件夹中使用 innodb 表。据我所知,我没有权限问题。

我尝试使用 MySQL CLI,可以毫无问题地查询数据库;使用 phpmyadmin 也是如此。但是当通过网站访问时,需要很长时间,而且我经常需要停止服务。

这又是另一个症状,表明有些东西无法正常工作。通过停止服务,sudo service mysql stop我可以看到它立即停止(phpmyadmin 无法再登录),但命令行提示符保持暂停状态,就像它在工作一样。我让 CLI 准备就绪的唯一方法是使用 CTRL+C 粗暴地停止服务。

知道哪里出了问题吗?谢谢

答案1

您可以通过运行(将大写字母替换为运行时变量)来查看这是否是 MySQL 问题:

mysql -uUSERNAME -pPASSWORD DATABASE "show processlist;"

...尽管执行请求。它会向你展示运行情况-time 查询以及它们花费的时间。如果你有一个特别慢的查询,它会在那里。如果查询太快,记录查询的方法

也可能是 Wordpress(或您的主题,或其他任何东西)用小查询敲打数据库。作为构建在线系统的人,我完全有资格告诉您一个秘密:WordPress 很烂。哦,好吧,这不是什么秘密。你需要做很多事情才能让它表现良好。为了让你走上正确的方向(假设它不是一个写得不好的模板):缓存插件!

同样,htop在发出请求时要留意。PHP+Wordpress 可能会占用大量 CPU 来生成页面。可能就是因为这个原因导致耗时太长。如果你无法通过缓存来修复它(并且你使用的是 64 位计算机),你可以尝试高压真空泵(Facebook 的 PHP-CGI 的近乎即插即用替代品)。它的速度要快得多,但需要安装。它不像那么简单apt-get install lamp-server^

最后,这听起来确实可能是 DNS 问题。如果您将域名指定为数据库地址,并且其解析需要很长时间(或更糟的是,一半时间都失败),那么这将堵塞连接。将其切换到 IP(127.0.0.1如果是本地 IP)并重试。

答案2

正如 @Oli 在另一篇文章中所建议的那样,这是一个 DNS 和名称解析问题。然而,它的方向与他建议的方向不同。

原来是 MySQL 每次调用时都试图进行 IP 解析,从而导致 DNS 查找。由于数据库服务器是内部的,与外界没有连接,因此查找最终会超时。

我通过在位于我的 VM下方的 SQL 配置文件skip-name-resolve中添加指令解决了该问题。my.conf/etc/mysql

现在我的本地 WP 很棒。

相关内容