我正在运行一个基于 LAMP 的小型 Web 服务器,该服务器上基于 PHP 的页面似乎至少需要 5 秒钟才能呈现。
我认为问题出在我的 PHP 配置上,具体原因是:
- 静态页面请求只需 0.5 秒或更短时间即可满足
- 对已保存的 PHP 页面静态版本的请求的响应速度与其他静态页面一样快。
- 基于 PHP 的页面的请求需要 5 秒以上才能满足,无论它们是否向数据库发出请求
- 无论是通过主机名还是 IP 访问服务器,延迟都会持续存在,因此这不是 DNS 问题
- 查看
vmstat
请求过程中显示换入和换出均为 0,因此这不是页面文件抖动 - 查看
top
请求过程中的情况显示,没有任何 apache 进程占用超过 2-3% 的 CPU 时间,因此不受 CPU 性能的限制 - 查看请求期间的 apache 日志显示基于 PHP 的页面的 GET 请求、5 秒的延迟,然后是 PHP 页面加载的第一个 CSS 文件的请求。
基于此,我确信问题出在 PHP 配置上,但 PHP 配置对我来说很陌生。我有哪些方法可以改善 PHP 性能?我应该检查哪些常见问题?
该服务器的主要用例是运行基于 Joomla CMS 的网站,但该问题似乎与 Joomla 无关,因为所有 PHP 页面都存在性能问题。
针对 Zoredache 的问题做出澄清:
- 在服务器上,运行
time curl http://127.0.0.1/foo/
速度很快——十分之一秒。 - 在本地网络的其他地方,运行速度
time curl http://10.1.0.1/foo/
很慢 - 至少 5 秒。
答案1
Rasmus(PHP 的创建者)就 PHP 性能做了一个完整的演讲http://talks.php.net/show/digg(有一段他演讲的视频,但我不记得在哪里了,如果我找到它会更新这篇文章)
编辑;
视频是这里
答案2
您是否使用 DNS 名称作为资源地址,例如数据库服务器地址?如果是,请尝试将其替换为 IP 地址,看看速度是否提高。这可能是一种快速的胜利。
否则我建议你尝试使用https://github.com/facebook/xhprof找到你的瓶颈