APC缓存碎片(无尽的困境)

时间:2012-12-30 14:34:41

标签: caching apc php

我知道a frequently asked question。但我尝试了所有建议的解决方案(apc.stat = 0,增加共享内存等)而没有任何好处。

这是带有统计数据的屏幕(你可以看到nginx和php5-fpm)以及apc.ini中设置的参数:

APC Stats page

APC用于多个站点上的系统和用户缓存条目(8-9个WordPress站点,一个带有MediaWiki和SMF)。

你会建议什么?

1 个答案:

答案 0 :(得分:1)

每个wordpress网站都会在用户缓存中缓存一个健康的数量。我自己深入研究了这一点,发现最好的“猜测”是,如果你在APC中使用用户缓存,请将碎片保持在10%以下。这有时可能意味着您需要尝试保留高达实际用于缓存的内存量的10倍以避免碎片。从现在开始,继续增加内存分配,直到运行一段时间后碎片保持在10%以下。

BTW:缓存的wordpress页面很大,所以你可能需要大量的内存来避免碎片。

为什么10%的碎片?这是一种黑色艺术,但我发现这是性能开始明显下降的地方。然而,我没有找到任何好的基准(或运行我自己的控制测试)。

这10倍的数量让我看起来很疯狂,但根本原因是APC没有办法进行碎片整理而不是重启(完全转储缓存)。当你只计划使用100-200m时,有一块1G的内存,可以填充很多空间,而不必寻找“漏洞”来放置东西。想想使用Windows 98的旧的FAT16或FAT32磁盘性能 - 当磁盘满50%时,需要手动进行碎片整理。

如果您无法承担额外的内存,您可能需要查看用户缓存的memcached或普通旧文件缓存。