【发布时间】:2011-06-29 17:19:45
【问题描述】:
当 APC 缓存已满时,它会挂起 Apache。 Apache 响应请求,但是永远等待 APC 缓存释放一些资源,但这永远不会发生。
我使用自己的小型删除脚本每 10 分钟运行一次 CRON 作业,该脚本会从 APC 中删除过期条目。好的,我可以为 APC 添加更多内存和/或我可以更频繁地运行删除脚本。但这不是真正的解决方案,我正在寻找一些新的方法来处理问题。
【问题讨论】:
当 APC 缓存已满时,它会挂起 Apache。 Apache 响应请求,但是永远等待 APC 缓存释放一些资源,但这永远不会发生。
我使用自己的小型删除脚本每 10 分钟运行一次 CRON 作业,该脚本会从 APC 中删除过期条目。好的,我可以为 APC 添加更多内存和/或我可以更频繁地运行删除脚本。但这不是真正的解决方案,我正在寻找一些新的方法来处理问题。
【问题讨论】:
这并不是真正的最终解决方案,但我写了我在问题中提出的小 PHP APC expunge script。此脚本由 CRON 每 10 分钟运行一次,它会手动删除过期项目。这远不是完美的解决方案,但至少它有很大帮助。
我仍在寻找最终解决方案。
【讨论】:
我发现设置 ttl 会在缓存已满时更改 APC 的行为。默认情况下,如果 ttl 为 0,APC 必须在缓存满时清空缓存。来自手册:
如果缓存用完 可用内存,缓存将是 如果 ttl 等于,则完全删除 0. 否则,如果 ttl 大于 0,APC 将尝试删除 过期条目。
【讨论】:
您可以尝试在经常执行的脚本中添加一行,以检查缓存是否快满了,如果是,请处理它。 此类脚本的一个示例可能是建立与数据库的连接的脚本。
【讨论】: