13

当您尝试将变量添加到 APC 并且 APC 缓存已满时会发生什么?它会自动从缓存中删除最少使用的变量吗?

4

2 回答 2

16

根据APC:运行时配置,“如果缓存耗尽可用内存,如果 ttl 等于 0,缓存将被完全清除。否则,如果 ttl 大于 0,APC 将尝试删除过期条目。”

因此,如果存在非零 TTL,它将删除存活时间已过的条目。;) 否则,它将删除整个缓存。

我注意到这并不能真正解决如果缓存耗尽内存并且您的 TTL 过高会发生什么。

于 2009-06-27T23:00:11.953 回答
5

根据经验(我们在生产中运行它),如果您没有设置 TTL 或 TTL 非常高并且没有任何内容过时,则会刷新整个缓存(如设为空)。您真的想尝试避免这种情况,因为它会导致 PHP 必须处理的下一个请求的负载峰值,因为对于需要的每个文件,APC 都需要编译它并将其存储在内存中(这比根本没有启用缓存)。此外,如果您收到大量流量和空缓存,您将遇到缓存猛击(请参阅 google 了解这方面的邪恶)

作为旁注,请参阅这个旧的演示文稿以获得相当粗略的 APC 指南以及需要注意的事项http://www.slideshare.net/oscon2007/os-gopal其中有些内容可能已经过时,但理论仍然适用.

于 2010-05-08T18:37:46.800 回答