Memcached vs APC welches soll ich wählen? [geschlossen]


161

Ich habe diesen Artikel gelesen: http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ von damals. Ich möchte die beste verfügbare Caching-Engine erhalten, damit meine Anwendung wirklich schnell ist. Natürlich möchte ich nicht zu viel zwischenspeichern, aber ich möchte zumindest das Beste da draußen auswählen. In diesem Artikel heißt es, dass Memcached langsam und apc schnell ist. Warum wählen alle Memcached ?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels heißt hier "Verwenden Sie eine schnelle (aber begrenzte) wie Apc, Memcache ... und a "Langsam" wie File, Sqlite ... "Halten Sie es für eine gute Idee, Apc als schnelles und Memcache als langsames zu verwenden?


14
Übrigens: Sie sollten APC verwenden, auch wenn Sie es nicht verwenden apc_store. Opcode-Cache allein macht PHP einige Male schneller.
Kornel

@porneL: was meinst du? Erhöht APC die PHP-Geschwindigkeit bereits nach der Installation, auch wenn ich keinen Code hinzufüge, um etwas in meinen Skripten zwischenzuspeichern?
Marco Demaio

5
@ Marco Demaio: In der Tat. APC ist hauptsächlich ein PHP-Optimierer (standardmäßig optimiert, solange es aktiviert ist) und apc_store()ist nur ein zusätzlicher Bonus.
Kornel

3
Wenn Sie es 2014 nur zum Zwischenspeichern auf einem Server verwenden, wählen Sie APCu.
Flion

Antworten:


268

Memcached ist ein verteiltes Caching-System, während APC nicht verteilt ist - und hauptsächlich ein Opcode-Cache.

Wenn (und nur wenn) Sie eine Webanwendung haben, die auf verschiedenen Webservern ausgeführt werden muss (Loadbalancing), müssen Sie Memcache für das verteilte Caching verwenden. Wenn nicht, bleiben Sie einfach bei APC und seinem Cache.

Sie sollten immer einen Opcode-Cache verwenden, bei dem es sich um APC handelt (auch APC wird in php6 iirc integriert, warum also nicht jetzt damit beginnen)?

Sie können / sollten beide für verschiedene Zwecke verwenden.


5
Atemberaubende Antwort +1. Meine Frage ist jetzt, was ist ein opcodeCache?
Marco Demaio

4
@Karsten Wenn Sie unterschiedliche Server haben (z. B. eine Cloud-Umgebung mit Lastenausgleich), solange Sie den Status nicht beibehalten / gemeinsam nutzen müssen, funktioniert APC auch als direkter Speichercache - wenn auch möglicherweise nicht so optimal wie jeder andere Cloud-Instanz muss ihren eigenen Cache erwärmen ...
Ray

35
Ein opcodeCache kompiliert den einfachen PHP-Code in Maschinencode ("Opcode") und speichert ihn dann in der kompilierten Form für zukünftige Anforderungen (bis festgestellt wird, dass sich die ursprüngliche PHP-Datei geändert hat). Dies bedeutet, dass PHP diesen Kompilierungsschritt nicht bei jeder einzelnen Anforderung ausführen muss, was Zeit spart. Dies ist nur eine der Möglichkeiten, um (unter anderem) eine schnelle Website zu gewährleisten.
Simon East

2
Es gibt eine interessante Diashow, die einige der Unterschiede zu Diagrammen und Benchmarks erklärt: slidehare.net/FordAntiTrust/php-performance-with-apc-memcached
Simon East

1
Kann memechached in nicht verteilten Systemen anstelle von APC verwendet werden? Es ist gut, nur eine zu behalten, wenn Sie in Zukunft mehr Maschinen haben werden. richtig? Oder beide verwenden, einen für Opcode und einen für erweiterbares Caching?
Adib Aroui

43

Wird zwischengespeichert, wenn Sie den Status auf mehreren Webservern beibehalten müssen (wenn Sie einen Lastenausgleich haben und es wichtig ist, dass der Inhalt des Caches für alle Server gleich ist).

APC, wenn Sie nur Zugriff auf den Schnellspeicher benötigen, um auf einem (oder jedem) Server zu lesen (und zu schreiben).

Denken Sie daran, dass APC auch die Ausführungszeit Ihres Skripts kompilieren und beschleunigen kann. So könnten Sie beispielsweise APC verwenden, um die Ausführungsleistung zu erhöhen, während Sie memcached für die Cache-Speicherung verwenden.


3
APC kann auch Speicher zwischenspeichern .... Oder?
mr_app

7
Update 2014: PHP 5.5 wird nativ Zend Optimizer Plus enthalten (das nur für Opcache, also nicht für Benutzer-Cache ist) und es scheint, dass APC nicht über PHP 5.4 hinaus entwickelt wird? Allerdings gibt es jetzt APCu pecl.php.net/package/APCu , das nur die Benutzer-Cache-Teile von APC
Flion

18

Der Hauptvorteil von APC ist der Opcode-Cache. Da PHP 5.5 OpCache in seinen Kern integriert hat und APC für PHP 5.4 immer noch als Beta gekennzeichnet ist, ist dies keine offizielle Ankündigung, aber die Entwicklung von APC würde in naher Zukunft eingestellt.

Daher würde ich Ihnen empfehlen, Memcached zu wählen.


5
Ich habe Stunden im Internet verbracht, um darüber nachzudenken, und ich bin zu dem gleichen Schluss gekommen.
Nicolas Zozol

9

Ich verwende sowohl einen für die Geschwindigkeit als auch den anderen, um alle meine Server zu synchronisieren. Wenn Sie Memcache verwenden, beachten Sie bitte die offenen Ports, die Sie mit iptables blockieren müssen.


6

Hey Thomaschaaf, ich hoffe, dies ist kein spätes Tool für Sie, aber bitte beachten Sie, dass APC einige Probleme im Zusammenhang mit "Benutzer-Cache" hat. Um es kurz zu machen: Wenn Sie Zeitüberschreitungen für Cache-Einträge festlegen oder wenn Ihr Apache im internen APC-Code abstürzt (z. B. Zeitüberschreitung), können Probleme auftreten.

Ich habe hier einen Eintrag zu diesem Problem: http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-apache.html , und Sie sollten auch http: //t3.dotgnu lesen . info / blog / php / user-cache-timebomb.html (von einem der APC-Entwickler, denke ich)


22
Ich bin darüber gestolpert und wollte aktualisieren, dass es jetzt angesprochen worden zu sein scheint (wie es sollte, 2 Jahre später!). Hier ist ein geschlossener Fehlerbericht, zum Beispiel: bugs.debian.org/cgi-bin/bugreport.cgi?bug=572529
Shane H

1

Ich benutze nur APC, da APC ein Code-Cache ist und sich wie ein Memcache verhält! Nur 1 Konfigurationsdatei anstelle von 2.

Und nur 1 Ort, um beide Cache zu überwachen .....


1

Es hängt davon ab, was Sie tun, aber für meine Drupal-Websites, die auf einem VPS ausgeführt werden, finde ich, dass APC großartig funktioniert! Wenn Sie CentOS 6 ausführen, ist es als leckeres Update verfügbar, das so einfach zu installieren ist und keine Konfiguration enthält, da die Standardeinstellungen angemessen sind. Ein Kinderspiel imho.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.