我问的原因是因为在使用时top
我没有看到像 APC 这样的进程。所以我假设内存使用量将在 apache 进程中计算。
是这样吗,这是否意味着 APC 正在使用的内存在每个 apache 进程中都被复制,从而占用的内存可能比最初分配给它的内存要多得多?
如果是这种情况,memcache 是否会是一个更好的解决方案,即使它没有在多个负载平衡服务器上使用?
APC 使用共享内存来存储其操作码缓存。在 mod_php 的情况下,此内存在所有 Apache 进程之间共享。所以一个 30MB 的缓存即使有 5 个 Apache 进程也只占用 30MB。
但是,当使用 mod_php 时,每个 Apache 进程确实会浪费大量资源,因为每个进程都包含 PHP 解释器。因此,当 Apache 提供静态内容(html、css、js、图像文件等)时,它使用加载了完整 PHP 解释器的进程。为了解决这个问题,有些人通过 mod_fastcgi 或 mod_fcgi 使用 FastCGI。 使用带有 FastCGI 的操作码缓存变得有点棘手。
目前没有办法将 memcache 用作操作码缓存。即使有,它也可能比预期的要慢。
除了作为操作码缓存之外,APC 还提供共享内存。这强烈表明它有自己的内部共享内存系统,类似于 memcached。