我可以进一步优化这些 APC 设置吗?

Raf*_*ger 6 php optimization alternative-php-cache

我想进一步优化 APC,但我不确定在哪里可以做些什么。首先是使用当前配置运行一周后的屏幕截图: APC仪表盘

我现在有以下几点我不确定:

  1. 我是否正确地看到碎片发生是因为缓存也用作用户缓存?
  2. 当我总共分配了 192MB 时,为什么碎片栏告诉我只有 5.8MB 的 100%?
  3. 这只是“内存使用”下的圆圈没有完全关闭的渲染问题吗?因为下面的 MB 值确实加起来了。(也就是说,这个圆圈在重启后看起来不错,当缓存越来越碎片化时它会变成这样。)
  4. 由于命中率非常好,我不确定碎片是否是一个大问题。你觉得我还能优化吗?

我最感兴趣的是回答这些问题。只有这样我才能更好地理解APC并自己做出调整。

一些详细信息:在此服务器上运行 Drupal 和 Magento。Drupal 也将其用作用户缓存。

我现在的问题是如何优化它。我可以分配更多的内存,但我不确定这是否真的有很大帮助。

更新:这是配置:

; The size of each shared memory segment in MB.
apc.shm_size = 192M

; Prevent files larger than this value from getting cached. Defaults to 1M. 
apc.max_file_size = 2M

; The number of seconds a cache entry is allowed to idle in a slot in case
; this cache entry slot is needed by another entry.
apc.ttl = 3600
Run Code Online (Sandbox Code Playgroud)

如您所见,目前它非常小。

thi*_*ice 5

我是否正确地看到碎片发生是因为缓存也用作用户缓存?

不,当文件的操作码缓存大小发生变化时可能会发生碎片,并且它不适合它之前占用的“切片” - 在引擎盖下它有点复杂,但这就是要点。

当我总共分配了 192MB 时,为什么碎片栏告诉我只有 5.8MB 的 100%?

它告诉您 100% 是因为在您的免费可用缓存空间中,其中 100% 与碎片有关(这意味着进入该“切片”的障碍必须在碎片大小内)。

这只是“内存使用”下的圆圈没有完全关闭的渲染问题吗?

是的,不要相信它;“切片内”打印的值有时也不正确。

由于命中率非常好,我不确定碎片是否是一个大问题。你觉得我还能优化吗?

绝对地!我会增加缓存。您可以分配 100MB,缓存 10MB,并且仍然有 100% 的命中率。

一个成功的设置应该几乎没有修剪(又名:很少到没有 gc) - 以及用于扩展的肘部空间,你需要一点额外的空间;(超过 5MB),因为碎片的影响会使想要进入缓存的东西“复杂化”。

争取 10% 的免费、非碎片空间,继续监控并增加大小。还要知道推送大量新代码文件也会对缓存产生影响。