2008-10-12 8 views
5

Für eine Single-Server-LAMP-Site (die normalerweise unter ziemlich hoher Last ist), was ist der beste Weg, Memcache zu verwenden?Wie verwende ich Memcache am besten mit einer Einzelserver-App?

Macht es Sinn, den Memcache-Daemon auf demselben Server wie die Anwendung auszuführen, oder wird das nur wertvollen Speicher von MySQL wegnehmen, was zu einem Leistungsverlust führt. Ist es in diesem Szenario sogar sinnvoll Memcache zu verwenden - oder ist es die beste Lösung, immer dedizierte Server für Memcache zu haben?

Ich schätze, dass Profilierung der Website vor und nach wäre erforderlich, um diese Frage wirklich zu beantworten, aber ich würde das lieber nicht in diesem Stadium auf der Live-Site tun. Zumal da draußen jemand die Antwort von Kopf bis Fuß kennt.

Antwort

10

Üblicherweise ist die Empfehlung (siehe Was ist Shared Memory? im memcached page) auf den gleichen Maschinen wie Webservern Memcached ausgeführt werden soll, auf der Prämisse, dass Web-Anwendungen sind CPU-schwer (die Memcached nicht), wohingegen memcached speicherintensiv ist (was die meisten Webanwendungen nicht sind, zumindest im Vergleich).

Wenn also Ihr Webserver über ausreichend Speicher verfügt, sollten Sie memcached ausführen. YMMV.

0

Eine andere Option für Memcached ist - abhängig von der Skalierung der Informationen, die Sie zwischenspeichern - das Caching in APC. Sie sollten diesen (oder einen ähnlichen Op-Code-Cache) ausführen, um die PHP-Seitenlieferung irgendwie zu beschleunigen, also wenn Sie irgendwo zwischen ein paar, hundert oder mehr Caches cachen (ich habe ein paar bei jeweils 15KB) Von mehr als 70 Variablen gleichzeitig können Sie einen Vorteil darin sehen, sie in APC zu speichern.

Ich habe eine Website, die einige DB-Lookups zwischenspeichert, und speichert auch eine Post-Parsing-Datei config.ini - und auf meiner (beschäftigt) Website, werde ich buchstäblich Millionen von möglichen DB-Treffer pro Tag speichern.