PHP 与同一主机上的 MySQL 通信速度很慢

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 的问题:

  • 如果我安装一个绕过数据库的缓存插件,延迟就会消失
  • 查询本身在几毫秒内执行

我已尝试按照建议将 skip-name-resolve 或 skip-networking 添加到 my.cnf这里,但没有运气。

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

我曾经尝试过使用 apache,甚至在 apache 前面使用 nginx,但现在 apache 进程占用了所有的 CPU。

最后一件事:我在另一个具有类似配置的 VPS 上运行完全相同的应用程序,并且没有延迟;index.php 在半秒内加载。

关于如何找出问题所在,有什么建议吗?

答案1

  • 尝试使用 IP 而不是主机名连接到 MySQL(使用 dig 来诊断 DNS 问题),
  • 使用高性能 MySQL 调优脚本,这将让你了解 MySQL 服务器中的一些问题,
  • 使用 strace 或 tcpdump 调试你的问题(这里有些例子),
  • 升级你的 php 和 mysql 并检查问题是否仍然存在,

答案2

如果 php-fpm 占用了 100% 的 CPU,这几乎不是与 MySQL 相关的问题,因此您应该开始检查 PHP 代码以找出哪段代码导致了延迟。我建议为此使用 XDebug。

答案3

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

通过所有这些,我认为 php-fpm 已正确安装/升级,也许禁用了一些模块。

希望这会有所帮助。

相关内容