gpt4 book ai didi

php - APC 没有为 Symfony1.4/Doctrine 应用程序提供任何性能提升?

转载 作者:可可西里 更新时间:2023-11-01 01:06:06 24 4
gpt4 key购买 nike

我正在开发一个应用程序 (Symfony 1.4/Doctrine),该应用程序的一些页面加载起来非常繁重。其中一个页面包含一个非常复杂的表单,其中包含很多关系(嵌入式表单)。该页面执行如下操作:获取所有对象、创建表单(使用对象)、呈现表单。

这导致每页加载时间约为 1.5 秒。 MySQL 似乎不是瓶颈,查询大约需要 0.01 秒。然而,水化结果需要更多时间:大约 0.3 秒。创建和嵌入所有子表单也需要很多时间(0.5 秒)。其余时间花在常规的 Symfony/Doctrine 方法上。所有这些时间都是通过 Symfony 计时器和/或 xdebug 找到的。

我希望我可以通过使用 APC 进行操作码缓存来加快我的生产服务器上的进程。所以我安装了 APC,进行了一些配置(缓存大小 = 400MB;最大文件大小 = 20MB,只是为了确定),最后对应用程序进行了基准测试。

没有 APC:

$ ab -n 100
Requests per second: 0.72 [#/sec] (mean)
Time per request: 1392.142 [ms] (mean)
Time per request: 1392.142 [ms] (mean, across all concurrent requests)
Transfer rate: 130.62 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 5 3.6 4 32
Processing: 1301 1387 258.0 1338 3549
Waiting: 1229 1315 258.2 1267 3475
Total: 1305 1392 258.0 1342 3553

使用 APC:

$ ab -n 100
Requests per second: 0.86 [#/sec] (mean)
Time per request: 1160.666 [ms] (mean)
Time per request: 1160.666 [ms] (mean, across all concurrent requests)
Transfer rate: 156.67 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 0.7 4 9
Processing: 1071 1156 164.1 1121 2337
Waiting: 1024 1104 164.3 1065 2286
Total: 1075 1161 164.1 1125 2341

有一点改进,但​​结果相当令人失望。为了确保 APC 运行良好,我还对运行在同一台服务器上的 Drupal 网站进行了基准测试。这几乎使 Drupal 网站的请求/秒翻了一番(从 4 页/秒到 8 页/秒)!很明显,APC 工作正常。

有没有人知道加速不足的原因是什么?有没有人在有/没有 APC 的情况下对 Symfony 应用程序做过一些基准测试?我可以在应用程序的互联网上找到一些要求将其请求/秒数翻倍的声明,但都没有基准。

最佳答案

操作码缓存只会加速原始类的加载。当代码大部分时间循环遍历数据库结果、创建复杂对象时,单靠 APC 是无济于事的。

Doctrine 支持缓存查询和结果,但是需要配置 APC 中的缓存。请参阅此网址:http://readthedocs.org/docs/doctrine/en/latest/en/manual/caching.html

也许您可以使用 apc_add 在表单创建后缓存它们。这有向用户呈现陈旧数据的风险,但也许这是值得的。

要了解为什么花费这么长时间的更多信息,您应该查看 profiling with XDebug .

关于php - APC 没有为 Symfony1.4/Doctrine 应用程序提供任何性能提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com