【发布时间】:2012-12-16 21:58:13
【问题描述】:
我正在努力寻找 APC 清除其旧条目的方式中的任何逻辑。 尤其是用户条目,我注意到碎片迅速增加到意想不到的水平。
虽然 apc.ttl 和 apc.user_ttl 设置为 3600,但我注意到 APC 缓存中有很多旧条目没有被清除。我反复增加了 APC 的内存大小,但它只会让它在达到 100% 碎片之前持续更长时间。
那么,为什么会发生这种情况?实际上我会认为这是 APC 中的一个错误,它只是不正常的行为。我希望某些 APC 进程不时清除旧条目。
另外,是否可以得出这样的结论:为 PHP 使用另一个缓存系统会更好,并且只使用 APC 作为操作码缓存(缺少清理的问题较少)?
【问题讨论】:
-
就个人而言,我会为用户数据使用另一种缓存机制,并且只使用 APC 进行操作码缓存 - 我没有遇到任何关于 APC 上的用户数据缓存的问题,而是分布式用户数据缓存,例如 memcache 或 redis在需要时提供可扩展性
-
所有 APC 函数都有一个 time-to-live 参数,如果您希望在某个时间后删除这些值,您不应该使用它吗?
-
@adeneo 一直都在使用 ttl,但是 1 天前创建的、有效期为 5 分钟的缓存条目现在仍在缓存中。
标签: php garbage-collection apc