【发布时间】:2013-01-22 20:08:27
【问题描述】:
我们有一个旧的 facebook 应用程序,用原生 php 编写,运行流畅。
本月我们决定在 zend-framework 2 中重写它。昨天,在切换到新应用程序后,它导致我们的服务器崩溃,并出现大量内存不足错误。所以我们转而使用旧应用。
我安装了 xdebug 来分析应用程序。使用 memory_get_peak_usage() 函数我注意到内存使用率很高。
在旧版应用中,静态页面仅使用 1 mb 内存。但是新的在同一页面上大约使用 7-8 mb。
这是 webgrind 的前两行:
Function Invocation Count Total Self Cost Total Inclusive Cost
Composer\Autoload\ClassLoader->loadClass 224 23.31 47.20
Composer\Autoload\ClassLoader->findFile 224 9.57 10.23
也试过 tha apache 的 ab 工具
ab -n 50 -c 5 -C PHPSESSID=SESSIONID http://myhost.com
结果是:
Percentage of the requests served within a certain time (ms)
50% 368
66% 506
75% 601
80% 666
90% 1073
95% 1812
98% 2278
99% 2278
100% 2278 (longest request)
所有这些结果都来自生产服务器而不是本地主机。
单页 7-8 mb 正常吗?如果没有,我该如何减少它?我应该在 zf2 还是 composer 中寻找它?
如果您需要,我可以提供代码示例。谢谢。
【问题讨论】:
-
使用调试器逐步完成应用程序。在这些速率下,应该很明显什么被连续调用/实例化 100 次,没有明显的原因。
标签: php performance memory-leaks zend-framework2 composer-php