APC显示100%的碎片化。

16

APC 显示出 100% 的碎片。这会有问题吗?

这是否意味着它没有任何帮助?我应该采取哪些措施来改善情况?

提前致谢。


6
APC 是一个用于 PHP 缓存、代码加速、基准测试和性能分析的库。在翻译过程中,我会尽可能保留原文的意思,并将其转化为更通俗易懂的语言。 - Sarfraz
我建议你阅读它的文档。 - Sarfraz
1
@spender:请查看http://docs.php.net/apc。 - VolkerK
1
APC 不适用于性能分析或基准测试。这要用 xdebug 或 xhprof 等工具。APC 是一种“opcode缓存”,它将“编译”后的PHP脚本存储在共享内存中,因此不必每次都解析。 - johannes
3个回答

11

根据我的经验,是的。我曾经使用一个系统,其中APC显示100%的碎片化,并且性能很差。我增加了APC的内存限制(在我的情况下为200 MB-但我们有很多代码),这足以给它一些余地。碎片化下降到零,如果我没记错,服务器上的CPU使用率下降了50%。

另外,请确保您正在使用随APC一起提供的apc.php脚本来监视碎片化/利用率。我们甚至编写了一个nagios检查来监视APC,因为我们的流量足够大,当APC填满时,apache会完全锁定。

故事的寓意:给APC足够的内存,并监视其利用情况。


APC Admin是一个非常好的工具,可以完全做到同样的事情。详情请访问http://www.techzonemind.com/apc-admin-new-generation-admin-interface-php-apc/。 - Jithin Jose

2

碎片化意味着APC经常从其缓存中丢弃物品并添加新的,并且很难找到足够大的连续块。

那么提高性能有两种主要方法

  • 为APC提供更多内存。理想情况下,APC可以将您的完整脚本存储在内存中。
  • 使用php.ini中的apc.filter过滤不经常请求或经常更改的文件。

此外,使用具有短寿命的apc_store()是不好的,经常使用apc_store()进行覆盖也是如此。


1
[...] 碎片化是影响性能的原因,而不是内存本身的大小。但似乎当内存较低时也容易发生碎片化[...]
此外,请注意 apc.php 的图表似乎存在一个错误:http://pecl.php.net/bugs/bug.php?id=13146

我不确定如何测试图表是否准确?如果它正在分裂,我应该将其删除吗?在这里不确定该怎么做。 - Daniel Fischer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接