0

我有一个 Apache/2.2.15 (VC9) 和 PHP/5.3.2 (VC9 线程安全) 在 Vista 64 位机器上作为 apache 模块运行。一切运行良好。

我进行基准测试的项目(使用 apache 的 ab 实用程序)基本上是标准的 Zend Framework 项目,不涉及任何数据库连接。平均(中值)apache 响应时间约为0.15 秒

在我使用标准设置安装 APC(3.1.4-dev VC9 线程安全)后,请求响应时间突然提高到1.3 秒(!),这是不可接受的......所有 apc 设置看起来总是很好(通过 apc.php脚本:足够的 shm 内存,没有缓存满,碎片 0%)。

唯一的区别是禁用统计查找 (apc.stat = 0)。然后响应下降到0.09 秒,这最终比没有 apc 更好。IIRC,显然统计查找会产生一些开销,但是与完全没有 apc 扩展的运行相比,它是否应该仍然具有更高的性能?

或者换一种说法,为什么 apc.stat 会产生如此多的开销?

4

3 回答 3

1

更新:我发现主要的减速是由防病毒软件引起的......我不明白为什么会发生这种情况(为什么只使用 apc),但它不再有问题了(注意:这是一个开发机器)

现在,如果使用 apc (apc.stat = 1) 运行,响应时间大约为 0.13 秒,这比没有 apc ( 0.15 秒) 好一点。它比预期的要好得多,但我暂时先离开它......

感谢 symcbean 的回答。

于 2010-05-28T13:38:21.737 回答
1

听起来统计检查绕过了文件缓存 - 但我想即使 Microsoft NT 也可以确保文件缓存是一致的。

(FWIW:我对 apc 的体验是它对 Linux 有很大的改进)

我建议尝试不同的文件系统——但对于 NT,没有太多选择。

如果您对结果有信心(您是在测试之间重新启动还是只是重新启动 Apache?)然后在http://bugs.php.net/上发布一个错误(那里似乎没有任何明显相关的内容)

C。

编辑

..虽然我刚刚想到 - 运行测试时您的系统内存发生了什么?如果您用 ab 实例用尽了所有物理内存,那么您将没有文件缓存。

于 2010-05-27T12:25:48.813 回答
0

杀毒软件是愚蠢的,它会认为每次 APC 运行并生成输出时都会有一个新的应用程序并重新扫描它。如果您禁用缓存“apc.cache_by_default=Off”,您应该会看到改进,尽管最好禁用 AV 扫描已编译的文件。

于 2010-05-28T13:52:06.277 回答