更新:
============================================================================= 我终于在 oprofile 中找到了原因。这是因为 Symfony 的路由缓存。我们有很多具有不同 URL 的页面,symfony 将它们缓存在一个文件(序列化数据)中。因此,缓存文件变得很大,需要更多 CPU 来序列化和反序列化数据。
禁用路由缓存后,一切正常
================================================================
我们有三个带有 LVS(Apache 2.11 + PHP 5.26)的 Web 服务器,并且我们使用 Symfony 1.0 进行产品开发。
但最近我们使用 Symfony 1.2.7 更新了我们的产品,并且遇到了一个严重的性能问题。
我们使用 Ganglia 来监控我们的服务器。更新之前,Web 服务器的平均负载低于 1。更新之后,负载急剧增加,最高负载为 80(我可以看到 Ganglia 的 CPU 使用率大幅增加)。
我找不到原因。是因为 Symfony 框架吗?(但根据 Ganglia 的说法,负载不应该增加得这么快)。
顺便说一下,我们新产品中大量使用了 AJAX,这意味着打开一个页面至少需要 5-7 个 PHP 请求。这是原因吗?
有人能帮我找出所有可能的原因吗?或者我应该提供什么其他信息来诊断?
先谢谢您,期待您的回复~
答案1
我最终在 oprofile 中找到了原因。这是因为 Symfony 的路由缓存。我们有很多具有不同 URL 的页面,symfony 将它们缓存在一个文件(序列化数据)中。因此缓存文件变得很大,需要更多 CPU 来序列化和反序列化数据。
禁用路由缓存后,一切正常