PHP在同一主机上与MySQL交谈缓慢

我有一个运行Ubuntu 10.04的VPS(OpenVZ):

  • nginx 1.0.5
  • PHP 5.3.5
  • MySQL 5.1.41

我已经在上面安装了WordPress,并且在Firebug中注意到,与index.php的初始连接需要几秒钟(一次从4到13秒)。

是什么让我觉得这是MySQL的问题:

  • 如果我安装一个绕过数据库的caching插件,滞后消失
  • 查询本身在几个毫秒内执行

我已经尝试添加skip-name-resolve或skip-networking到my.cnf,正如这里所build议的,没有运气。

我注意到的另一件事是,在生成页面时,php-fpm进程达到100%的CPU负载峰值。

我曾尝试使用Apache,而不是Apache,但现在的Apache进程霸占了所有的CPU。

最后一件事:我在另一个类似configuration的VPS上运行这个完全相同的应用程序,并没有任何延迟; index.php加载不到半秒。

有关如何找出问题的build议?

  • 尝试使用IP,而不是主机名连接到您的MySQL(使用挖诊断DNS问题),而不是
  • 使用高性能MySQL调优脚本 ,这将给你对MySQL服务器的一些问题的想法,
  • 使用strace或tcpdump来debugging你的问题( 这里是一些例子 ),
  • 升级你的PHP和MySQL,并检查问题是否存在,

如果php-fpm使用100%的CPU,这几乎不是MySQL相关的问题,所以你应该开始检查你的PHP代码,以find哪一段代码导致延迟。 我build议为此使用XDebug。

我会检查防火墙,php-fpm到mysql连接(考虑切换到pipe道/套接字)。

有了这一切,我想php-fpm是正确安装/升级,也许禁用一些模块。

希望这有助于某种方式。