我不确定发生了什么,但一段时间以来我一直在本地 Ubuntu 机器上使用我的开发站点(在 VM 上运行)。该站点在使用 MySQL 设置的 Wordpress 实例上运行,以在单独的文件夹上使用 innodb 表。据我所知,我没有权限问题。
我尝试使用 MySQL CLI,我可以毫无问题地查询数据库;同样使用 phpmyadmin。但是当涉及到通过网站访问时,它需要很长时间,而且我经常需要停止服务。
这又是另一种症状,某些东西无法正常工作。通过停止服务sudo service mysql stop
我可以看到它立即停止(phpmyadmin 无法再登录)但命令行提示保持不变,就像它正在工作一样。我必须准备好 CLI 的唯一方法是使用 CTRL+C 粗暴地停止服务。
知道出了什么问题吗?谢谢
您可以通过运行查看这是否是 MySQL 问题(将大写替换为您的运行时变量):
...在执行请求时。它会向您显示当时正在运行的查询以及它们花费了多长时间。如果您有一个特别慢的查询,它会在那里。如果这太快,可以使用记录查询的方法。
它也可能是 Wordpress(或您的主题,或其他任何东西)用小查询来敲击数据库。作为构建在线系统的人,我完全有资格告诉您一个秘密:Wordpress 很烂。哦,好吧,这不是秘密。你需要做很多事情才能让它表现良好。让你朝着正确的方向前进(假设它不是一个写得不好的模板):缓存插件!
同理,边看
htop
边提要求。PHP+Wordpress 可能会占用大量 CPU 来生成页面。可能只是花了这么长时间。如果您不能通过缓存修复它(并且您使用的是 64 位计算机),您可以尝试HHVM(Facebook 的 PHP-CGI 的几乎直接替代品)。它快得多,但需要安装。不是那么简单apt-get install lamp-server^
。最后,听起来确实可能是 DNS 问题。如果您指定一个域名作为您的数据库地址,并且它的解析一直在进行(或者更糟,有一半时间失败),那么连接就会被阻塞。将它切换到一个 IP(
127.0.0.1
如果它是本地的)并重试。正如另一个@Oli 所建议的那样,这是 DNS 和名称解析的问题。然而,这与他建议的方向不同。
原来是 MySQL 试图在每次调用时进行 IP 解析,从而导致 DNS 查找。因为数据库服务器是内部的,没有与外界的连接,查找最终会超时。
我通过在位于我的 VM下面的 SQL 配置文件中添加
skip-name-resolve
指令解决了这个问题。my.conf
/etc/mysql
现在我当地的 WP 摇滚。