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