APC 正常运行所需的最小共享内存空间是多少?我目前正在基于 virtuozzo 的 VPS 上运行 Wordpress 博客,我无法将内核共享内存设置为 32 mb 以上。有没有办法告诉 APC 使用“普通”内存而不是共享内存(我有足够的 RAM...)
我当前的 apc.ini 看起来像这样,但 apc 告诉 met 它只使用了 30 MB(1 个段,30.0 MBytes(mmap 内存,pthread 互斥锁定)):
extension = apc.so
apc.enabled = 1
apc.shm_segments = 15
apc.num_files_hint = 2700
apc.user_entries_hint = 2700
apc.ttl = 7200
apc.user_ttl = 3600
apc.gc_ttl = 600
apc.cache_by_default = 1
apc.max_file_size = 2M
apc.stat = 1
答案1
使用 APC 包中的文件 apc.php 检查 APC 如何使用内存。增加它直到 APC 有 20% 的可用备用内存。
单个 Wordpress 加上一些插件可能需要超过 40M。
答案2
您可以请求的共享内存段的大小可能有限制。
但是,您可以添加多个这样的段供 APC 在配置中使用:apc.shm_segments=2
http://php.net/manual/en/apc.configuration.php#ini.apc.shm-segments
答案3
我自己找到了解决方案:
默认情况下,apc 现在使用 mmap 来处理共享内存。理论上,内核不应将 mmap 绑定到最大共享内存大小,但似乎确实如此,至少在 virtuozzo 等共享服务器环境中是如此。此外,mmap 会忽略,apc.shm_segments
因为它不会创建多个匿名文件以在没有掩码的情况下映射到内存中,因此除非您还设置了 apc.mmap_file_mask,否则这似乎毫无用处。
另一种方法是重新编译 apc 使用--disable-apc-mmap
并改用 IPC 共享内存!