我正在努力在一组繁忙的服务器上优化 APCu 配置。上周我们遇到了 APC 的问题,在我们的 PHP 日志中有这些错误
apc_add(): GC 缓存条目 '....:' 在 gc-list 上持续了 3601 秒' 在第 55 行的 /.../index.php 中严重性为 2
我找到了这个相关的 SO 线程,这让我考虑设置我们的gc_ttl = 0
. 当前值为gc_ttl = 3600
.
我的猜测是我们在缓存中有过期的键,但没有被完全删除,因此可以通过apc_store
调用重新分配。我不确定如何确定这个假设是否正确,有什么想法吗?设置gc_ttl = 0
是否有助于释放插槽以进行重新分配?
我发现我们的内存使用图很有趣。
它在饼图下方显示
免费:264.9 MB (66.2%)
然而,饼图的绿色部分表示只有 161.4 MBytes 可用。
我们当前的apcu配置
; Enable apcu extension module
extension=apcu.so
apc.enable_cli=1
apc.enabled=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.shm_size=400M
apc.ttl=7200
apc.entries_hint=28000