2009-07-13 4 views
9

내가 물어 보는 이유는 top을 사용할 때 APC와 같은 프로세스가 표시되지 않기 때문입니다. 그래서 나는 메모리 사용량이 아파치 프로세스에서 차지한다고 생각한다.APC는 opcode 및 사용자 변수 캐시를 어디에 저장합니까?

그렇다면 APC가 사용중인 메모리가 각 아파치 프로세스에서 복제되어 원래 할당 된 것보다 훨씬 많은 메모리를 차지할 가능성이 있습니까?

memcache가 여러로드 균형 조정 된 서버에서 사용되지 않는 경우에도 더 나은 해결책이 될 수 있습니까?

답변

0

opcode 캐시 외에도 APC는 공유 메모리를 제공합니다. 그것은 memcached와 비슷한 내부 공유 메모리 시스템을 가지고 있음을 강력히 시사합니다.

12

APC는 opcode 캐시를 저장하기 위해 공유 메모리를 사용합니다. mod_php의 경우이 메모리는 모든 Apache 프로세스간에 공유됩니다. 따라서 30MB 캐시는 5 개의 Apache 프로세스가 있더라도 30MB 만 차지합니다.

그러나 mod_php를 사용할 때 각 아파치 프로세스는 각 프로세스가 PHP 인터프리터를 포함하기 때문에 많은 자원을 낭비합니다. 따라서 Apache가 정적 컨텐츠 (html, css, js, 이미지 파일 등)를 제공 할 때 전체 PHP 인터프리터가로드 된 프로세스를 사용합니다. 이 문제를 해결하기 위해 mod_fastcgi 또는 mod_fcgi를 통해 FastCGI를 사용하는 사람들이 있습니다. Using an opcode cache with FastCGI은 다소 까다로워집니다.

현재 opcode 캐시로 memcache를 사용할 방법이 없습니다. 있을지라도, 그것은 아마 원하는 것보다 느려질 것입니다.

관련 문제