Memcached와 APC 중 어느 것을 선택해야합니까? [닫은]


161

나는이 기사를 읽었다 : http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ 언제부터 돌아 오는 길. 내 응용 프로그램이 정말 빠르도록 가능한 최고의 캐싱 엔진을 원합니다. 물론 오버 캐시는하고 싶지 않지만 적어도 가장 좋은 것을 선택하고 싶습니다. 이 기사에서 Memcached는 느리고 apc는 빠르다고 말합니다. 왜 모두가 memcached를 선택 합니까?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels 는 "Apc, Memcache ...와 같은 빠른 것을 사용하지만 ... "느린"File, Sqlite ... "Apc를 fast로, Memcache를 slow로 사용하는 것이 좋은 생각이라고 생각하십니까?


14
BTW :를 사용하지 않더라도 APC를 사용해야 apc_store합니다. Opcode 캐시만으로 PHP가 몇 배 더 빠릅니다.
Kornel

@porneL : 무슨 뜻인가요? 스크립트에 아무 것도 캐시하는 코드를 추가하지 않더라도 APC는 설치 후 PHP 속도를 향상 시킵니까?
마르코 데마 이오

5
@Marco Demaio : 그렇습니다. APC는 주로 PHP 옵티 마이저 (활성화 된 경우 기본적으로 최적화 됨)이며 apc_store()그 외에 추가 보너스입니다.
Kornel

3
2014 년 한 서버에서 캐싱에만 사용하는 경우 APCu로 이동하십시오.
Flion

답변:


268

Memcached는 분산 캐싱 시스템 인 반면 APC는 비 분산 (주로 opcode 캐시)입니다.

다른 웹 서버 (로드 밸런싱)에 있어야하는 웹 응용 프로그램이있는 경우 분산 캐싱에 memcache를 사용해야합니다. 그렇지 않다면 APC와 캐시에 충실하십시오.

항상 APC 인 opcode 캐시를 사용해야합니다 (APC는 ​​php6 iirc에 통합되므로 지금 사용하지 마십시오).

다른 목적으로 둘 다 사용할 수 있습니다.


5
놀라운 답변 +1. 내 질문은 이제 opcode캐시 가 무엇 입니까?
Marco Demaio

4
@Karsten 클라우드로드 밸런싱 된 환경과 같은 다른 서버가있는 경우 서버 전체에서 상태를 유지 / 공유 할 필요가없는 한 APC는 각기 다른 메모리 캐시처럼 잘 작동합니다. 클라우드 인스턴스는 자체 캐시를 예열해야합니다.
Ray

35
opcode캐시는 기계 코드 ( "오피 코드")로 일반 PHP 코드를 컴파일 하나이며, 다음 (가 감지 할 때까지 원래의 PHP 파일이 변경되었습니다) 미래의 요청에 대해 컴파일 된 형태로 저장합니다. 이것은 PHP가 모든 단일 요청에 대해이 컴파일 단계를 실행할 필요가 없음을 의미하며 시간을 절약합니다. 빠른 사이트를 보장하는 여러 방법 중 하나 일뿐입니다.
Simon East

2
다이어그램과 벤치 마크와의 차이점을 설명하는 흥미로운 슬라이드 쇼가 여기 있습니다. slideshare.net/FordAntiTrust/php-performance-with-apc-memcached
Simon East

1
memechached를 APC 대신 비 분산 시스템에서 사용할 수 있습니까? 앞으로 더 많은 기계를 사용한다면 하나만 유지하는 것이 좋습니다. 권리? 아니면 opcode와 확장 가능한 캐싱에 모두 사용합니까?
Adib Aroui

43

여러 웹 서버에서 상태를 유지해야하는 경우 Memcached (로드 밸런스 상태이고 캐시에있는 내용이 모든 서버에서 동일해야하는 경우)

(또는 각) 서버에서 읽기 (& 쓰기)하기 위해 빠른 메모리에 액세스해야하는 경우 APC.

APC는 또한 스크립트 실행 시간을 컴파일하고 가속화 할 수 있습니다. 예를 들어 캐시 스토리지에 memcached를 사용하는 동안 실행 성능 향상을 위해 APC를 사용할 수 있습니다.


3
APC도 스토리지를 캐시 할 수 있습니다.
mr_app

7
2014 업데이트 : PHP 5.5에는 Zend Optimizer Plus (Opcache 전용이므로 사용자 캐시 용이 아님)가 포함되어 있으며 APC가 PHP 5.4 이상으로 개발되지 않을 것입니까? 그러나 APCu pecl.php.net/package/APCu 가 있습니다. APCu 사용자 캐시 부분 만 가져갔습니다
Flion

18

APC의 주요 보급은 opcode 캐시입니다. PHP 5.5는 OpCache를 핵심에 통합했으며 PHP 5.4 용 APC는 여전히 베타 버전으로 표시되어 있기 때문에 공식 발표는 아니지만 가까운 시일 내에 APC 개발이 중단 될 것입니다.

따라서 Memcached를 선택하는 것이 좋습니다.


5
나는 웹에서 그것에 대해 생각하기 위해 몇 시간을 보냈으며, 같은 결론을 내렸다.
Nicolas Zozol

9

속도를 위해 하나를 사용하고 모든 서버를 동기화하기 위해 다른 하나를 사용합니다. memcache를 사용하는 경우 iptables로 차단해야하는 열린 포트를 염두에 두십시오.


6

Thomaschaaf 님,이 도구가 늦지 않았 으면 좋겠지 만 APC에는 "사용자 캐시"와 관련된 몇 가지 문제가 있습니다. 간단히 말해, 캐시 항목의 시간 초과를 설정하거나 내부 APC 코드 내에서 아파치가 충돌하는 경우 (예 : 시간 초과) 몇 가지 문제가 발생할 수 있습니다.

http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-apache.html 여기에 문제에 대한 항목이 있으며 http : //t3.dotgnu 도 읽어보십시오 . info / blog / php / user-cache-timebomb.html (제 생각에 APC 개발자 중 한 사람으로부터)


22
나는 이것을 우연히 발견하고 지금 해결 된 것으로 보입니다 (2 년 후!). 닫힌 버그 보고서는 다음과 같습니다. bugs.debian.org/cgi-bin/bugreport.cgi?bug=572529
Shane H

1

APC는 코드 캐시이며 memcache처럼 작동하기 때문에 APC 만 사용합니다! 2 개 대신 1 개의 구성 파일 만

그리고 두 캐시를 모두 모니터링 할 수있는 곳은 1 곳뿐입니다 .....


1

그것은 당신이하는 일에 달려 있지만 VPS에서 실행되는 drupal 웹 사이트의 경우 APC가 훌륭하게 작동한다는 것을 알았습니다! CentOS 6을 실행하는 경우 yum 업데이트로 사용할 수 있으므로 설치가 간단하고 기본값이 적절하지 않으므로 구성이 없습니다. 더 똑똑한 imho.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.