Wir haben viele Foren studiert und kennen die Antwort auf die folgenden Fragen nicht. Wir haben beides APC
und Memcache
auf unseren Servern installiert. Wir sind uns nicht sicher, welche Konfiguration die richtige und beste ist.
Meine Frage
Was sind / sind die besten Einstellungen, um Magento gleichzeitig mit Memcache + APC auszuführen? (Oder ist das überhaupt nicht klug)
Hintergrundforschung
Hier werden Memcache und APC als schneller und langsamer Cache (aber keine Festplatte) empfohlen. Klingt so, als ob das nur funktioniert, wenn Sie genug RAM haben (und sicher sind)
Und dieser Artikel handelt von Memcache oder APC - und wir haben beides
Und hier heißt es, dass Memcache nur dann wirklich funktioniert, wenn Sie auch ein langsames Backend definiert haben
Und ich denke, dieser Artikel sagt dasselbe
Dies ist die Lösung meines ISP für local.xml
<cache>
<backend>apc</backend>
<prefix>sitenamehere__</prefix>
</cache>
<cache>
<backend>memcached</backend>
<memcached>
<servers>
<server>
<host><![CDATA[127.0.0.1]]></host>
<port><![CDATA[11211]]></port>
<persistent><![CDATA[1]]></persistent>
</server>
</servers>
<compression><![CDATA[0]]></compression>
<cache_dir><![CDATA[]]></cache_dir>
<hashed_directory_level><![CDATA[]]></hashed_directory_level>
<hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
<file_name_prefix><![CDATA[]]></file_name_prefix>
</memcached>
</cache>
Lage
Shared - Hosting - Brim FPC installiert: http://ecommerce.brimllc.com/full-page-cache-magento.html (diese FPC hat auch eine skalierbare Dateicache es komplizierter zu machen)
Antworten:
Sie müssen die klare Unterscheidung zwischen diesen beiden Produkten verstehen, um zu verstehen, wie sie verwendet werden.
Verwendung von APC als OPCode-Cache
Installieren Sie einfach das Modul auf Ihrem Server
Und aktivieren Sie es in Ihrem
php.ini
Anschließend aktivieren Sie die Laufzeitkonfiguration und passen sie an, z.
Starten Sie dann PHP / Apache neu
Danach gibt es nichts mehr zu tun. Bestätigen Sie, dass APC aktiviert
phpinfo()
ist, und drücken Sie kurz. Andernfalls ist zu diesem Zeitpunkt der OPCode-Cache-Teil von APC aktiv.Auf Magentos Seite muss nichts konfiguriert werden.
Verwendung von APC als schnelles Backend
Sie müssen Folgendes zu Ihrer hinzufügen
./app/etc/local.xml
Leeren Sie dann Ihre vorhandenen Geschäfts-Caches. Um zu überprüfen, ob es funktioniert, laden Sie eine Seite in das Front-End und das
./var/cache
Verzeichnis sollte leer bleiben.Verwenden von Memcache als schnelles Backend
Sie müssen Memcache als PHP-Erweiterung installieren und den entsprechenden Memcache-Daemon (Memcached) auf Ihrem Server installieren.
Und aktivieren Sie es in Ihrer php.ini
Installieren Sie dann Memcached auf dem Server. Passen Sie die URL für RH / Centos an Ihre Release-Version und Ihre CPU-Architektur an.
Ändern Sie dann Magento so, dass Memcache als schnelles Backend verwendet wird, und ändern Sie den Socket-Pfad entsprechend in eine TCP / IP-Verbindung.
Die Vorbehalte von Memcache und Tagging - was speichert es?
Memcache unterstützt nur eine Ebene von Schlüssel-Wert-Beziehungen, daher können die Magento-Cache-Tags (die zum unabhängigen Leeren von Cache-Daten verwendet werden) nicht gespeichert werden. Infolgedessen müssen Sie entweder a angeben
slow_backend
, um die Cache-Inhalts-Tag-Beziehung beizubehalten, oder keines definieren.Wenn Sie ein definieren
slow_backend
, besteht das Risiko, dass die Cache-Tags so groß werden, dass die Leistung negiert wird. Es gibt auch das inhärente Problem, dass Sie nicht auf mehrere Server skalieren können, wenn jeder Server seine eigenen Cache-Tags verwaltet.Wenn Sie also Memcache verwenden, ist der bessere Ansatz (mit der Einschränkung, dass Sie Caches nicht unabhängig voneinander leeren können), die Verwendung von Memcache nicht zu stören
slow_backend
.In diesem Fall empfehlen wir, es zu entfernen
<slow_backend>database</slow_backend>
und durch Folgendes zu ersetzen:Dies unterbricht / deaktiviert die 2. Ebene des Cachings (und verhindert das Speichern von Tags), ermöglicht jedoch weiterhin die Leistung von Memcache.
Welche zu benutzen
Wenn es sich um eine Einzelserver-Bereitstellung handelt, kann es nicht schaden, APC nur für alles zu verwenden.
Wenn es sich um eine verteilte Einrichtung handelt, müssen Sie Memcache als schnelles Backend verwenden (damit alle Computer auf den gemeinsamen Speicher zugreifen können).
Wenn Ihr Hosting-Anbieter Ihnen nicht sagen kann, welches Setup Sie verwenden sollen, haben Sie mit Sicherheit den falschen Host.
Zuschreibungen: sonassi.com , php.net , repoforge.org
quelle
slow_backend must implement the Zend_Cache_Backend_ExtendedInterface interface
Mage 1.7.0.2Ich stimme den vorherigen Antworten durchaus zu, aber hier ist eine kurze Zusammenfassung: Ja, apc kann sowohl als Cache-Speicher-Engine als auch als PHP-Bytecode-Optimierer verwendet werden. Es müssen jedoch zwei Punkte geklärt werden:
Als schnelles Backend werden die Konfigurationsanweisungen, die von APC verwendet werden, um zu verstehen, wie Daten gespeichert werden müssen, über die Anweisungen apc.user_% verwaltet. Die anderen betreffen nur den Bytecode-Cache (Bsp .: die Ablaufdauer für den Opcode-Cache, apc.user_ttl: die Ablaufdauer für die von Ihrem Magento zwischengespeicherten Daten).
Und als schnelles Backend hat APC genau dasselbe Verhalten wie memcached: Es verwaltet die Cache-Tags nicht und für Magento ist ein konfiguriertes langsames Backend erforderlich (oder es wird standardmäßig die langsame Backend-Datei verwendet).
Nach meiner Erfahrung benötigen Sie auf Websites mit großem Datenverkehr, wenn Sie apc nur als Bytecode-Optimierer verwenden, zwischen 96 und 256 MB für den Konfigurationswert apc.shm_size. Erhöhen Sie auch die apc.num_files_hint von 1000 auf 15000: Standardmäßig enthält der Apc-Cache-Bytecode-Cache nur 1000 Dateien, und Magento enthält standardmäßig ca. 20.000 PHP- und PHTML-Dateien (
find . -type f -name "*.php" -o -name "*.phtml" | wc -l
). Passen Sie diesen Wert also mit Ihrem Quellcode an.Wenn Sie APC oder memcached als schnelles Backend verwenden, ist es schwierig, einige Tipps zum erforderlichen Arbeitsspeicher bereitzustellen: Dies hängt wirklich von der auf Ihre Instanz angewendeten Cache-Richtlinie ab.
Im Moment funktioniert Ihre Cache-Konfiguration folgendermaßen:
Warum diese zwei Managementebenen? memcached und andere schnelle Backends sind Speicher. Das bedeutet, dass Daten beschädigt oder verschwunden sein können.
Wie können Sie diese Konfigurationsleistung steigern?
Das Deaktivieren des zweiten Schreibvorgangs ist wahrscheinlich eine der effizientesten Optionen. Dies wird in dem von Ihnen erwähnten vierten Artikel erläutert. Sie können den slow_backend_store_data-Quellcode jedoch nicht ohne Änderungen verwenden. In Ihrem Zusammenhang empfehle ich diese Anpassung aus den folgenden Gründen nicht: Ihre im Cache gespeicherten Daten werden niemals kontrolliert. Sie werden Daten im Speicher speichern, Leistung verdienen, aber möglicherweise einen ungültigen Inhalt an Ihre Besucher senden. Sie müssen also eine Lösung finden, die sicherstellt, dass Sie über Speicherzugriff (für eine bessere Leistung), Schreibsteuerung und die Möglichkeit zum Deaktivieren des Caching von slow_backend_store_data verfügen. Sie erreichen diesen Kontext über:
Ersetzen Sie den memcached Server durch einen redis-Server (redis kann das Lesen und Schreiben wie von einem Dateisystem gesteuert) und verwenden Sie apc weiterhin als Bytecode-Optimierer
* Stellen Sie sicher, dass Sie die Option slow_backend_store_data verwenden können. * Passen Sie entweder Ihren Quellcode an oder wechseln Sie zu einem langsamen Datenbank-Backend ein Problem)
* Deaktiviere die slow_backend_store_data Option * : In dieser Konfiguration ist keine Lese- und Schreibkontrolle mehr erforderlich.
quelle
Als zusätzliche Anmerkung dazu haben wir festgestellt, dass es bei der Verwendung von APC mit Magento (für Opcode-Caching - wir verwenden Redis für konventionelles Magento-Seiten- und Block-Caching) wichtig ist, dass die stat-Einstellung in der Produktion 0 ist (aber 1 in Entwicklung):
Mit der Einstellung apc.stat wird festgelegt, ob ein Skript bei jeder Anforderung überprüft werden soll, um festzustellen, ob es geändert wurde ( http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat) ) Wenn Sie dies in einer Produktionsumgebung auf 0 setzen, hat dies den Leistungsvorteil, dass APC diese Prüfung nicht bei jeder Anforderung durchführt.
Beachten Sie, dass Sie nach dem Festlegen von apc.stat auf 0 wahrscheinlich Ihren Webserverprozess neu starten müssen, um Dateiänderungen (dh nach der Bereitstellung) zu übernehmen. Dies sollte jedoch trotzdem Teil Ihrer Strategie nach der Bereitstellung sein.
quelle
Das Beste, was wir getan haben, um das Backend erheblich zu beschleunigen, ist die Installation von REDIS als Cache-Handler . Es wird jetzt auch im Kern von Magento 1.8 und höher unterstützt.
Nichts ist vergleichbar ... jetzt ist es Klick, Klick, Klick
http://www.magentocommerce.com/knowledge-base/entry/redis-magento-ce-ee
Darüber hinaus können Sie die Redis Session-Erweiterung hinzufügen, um dem Redis Memory Server auch Sitzungen hinzuzufügen ...
Viel Glück!
quelle
Aus dieser local.xml-Datei übernimmt Magento den letzten Eintrag und verwendet Memcache. Ich denke, es gibt eine Verwechslung zwischen der Funktionsweise von APC und Memcache mit Magento.
Erstens hat APC zwei Verwendungszwecke:
Memcache hingegen ist nur ein Schlüssel- / Wertespeicher. Der große Vorteil von Memcache besteht darin, dass es im Client-Server-Modus ausgeführt werden kann, sodass mehrere Frontend-Server denselben Cache verwenden können. Dies ist ein Muss, wenn Sie mehrere Server haben, die dieselbe Website bedienen.
Am häufigsten wird APC installiert, um das Zwischenspeichern von Opcode zu ermöglichen (damit Sie ~ 25% schneller Skripte ausführen können) und Memcache als Cache-Server verwendet. Ich habe APC auch als Cache-System verwendet, und obwohl es theoretisch etwas schneller sein sollte als Memcache, kann man den Unterschied nicht erkennen.
quelle