我有一个运行 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 已正确安装/升级,也许禁用了一些模块。
希望这会有所帮助。