当PHP APC缓存完全填满时,如何防止Apache挂起?

时间:2011-02-18 10:02:09

标签: php apache apache2 apc

当APC缓存已满时,它会挂起Apache。 Apache响应请求,但是等待APC缓存永远释放一些资源,但这绝不会发生。

我使用自己的小型删除脚本每10分钟运行一次CRON作业,该脚本会从APC中删除过期的条目。好的,我可以为APC添加更多内存和/或我可以更频繁地运行清除脚本。但这不是真正的解决方案,我正在寻找一些如何处理问题的新方法。

3 个答案:

答案 0 :(得分:1)

我发现设置ttl会在缓存已满时更改APC的行为。默认情况下,如果ttl为0,APC必须在缓存满时清空缓存。从手册:

  

如果缓存耗尽   可用内存,缓存将是   如果ttl等于,则完全清除   否则,如果ttl大于0,APC将尝试删除   过期的条目。

答案 1 :(得分:1)

这不是真正的最终解决方案,但我写了一些我在问题中提出的小PHP APC expunge script。此脚本每10分钟由CRON运行,并手动删除过期的项目。这远非完美的解决方案,但至少它有很大的帮助。

我仍在寻找最终解决方案。

答案 2 :(得分:0)

您可以尝试在经常执行的脚本中添加一行,以检查缓存是否已满,如果是,请处理它。 此类脚本的示例可以是建立与数据库的连接的脚本。