You are not logged in.

Dear visitor, welcome to WoltLab Bugtracker. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

  • Uzimaster

    Moderator

    You have to register first, to connect to this user.

11

MemCache im Community Framework einsetzen

Rating:

by Uzimaster, Wednesday, November 25th 2009, 12:52am

Seit dem WoltLab Community Framework 1.1 (Codename Tempest) steht es dem Administrator frei zwischen 2 Cachemethoden zu wählen. Hier soll kurz auf die Alternative und deren Vorteile eingegangen werden.

Die erste ist ein dateibasierender Cache.
Das bedeutet für das Community Framework das alle Daten, die zwischengespeichert werden sollen, serialisiert in Dateien abgelegt werden. Der Vorteil dieser Methode liegt klar auf der Hand: Es funktioniert auf jedem Server und ist vergleichsweise leicht zu implementieren.

Diese Variante hat jedoch auch einen entscheidenen Nachteil wenn man sehr viele Zugriffe verarbeiten muss:
Ein Dateizugriff kostet Zeit, eine Festplatte ist im Vergleich mit den restlichen Komponenten in einem Server eine wahre Bremse.

Hier wäre es doch ein guter Ansatz diese Caches im Arbeitsspeicher abzulegen. Der Zugriff auf den RAM geht sehr schnell. Ein Faktor ist das keine Mechanik bewegt werden muss.

Die zweite, mit dem Community Framework 1.1 eingeführte, Cachemethode nutzt das Programm "memCache". Auf dessen Verwendung und Installation möchte ich hier kurz eingehen.

Woher bekomme ich MemCache?

Ursprünglich für Unix-ähnliche Systeme entwickelt wurde MemCache auch für die Win32-Architektur portiert. Eine Quelle ist beispielsweise http://jehiah.cz/projects/memcached-win32/. Dort schnell die fertigen Dateien (Win32 binaries) runtergeladen und schon kann es mit der Installation losgehen.

Über die Kommandozeile (cmd.exe) müsst ihr in das Verzeichniss wechseln, wohin ihr die Datei entpackt habt. Ein Aufruf von "memcached.exe -d install" erledigt den rest. Standardmäßig wird der Port 11211 benutzt. Ein Aufruf von "memcached.exe -d start" startet den Service unter Windows. Alternativ kann man ihn auch in der Systemsteuerung unter Verwaltung -> Dienste starten.

Das ganze gibt's natürlich auch für Unix-ähnliche Systeme, schließlich wurde es dafür entwickelt. Bei den meisten Systemen kann man MemCache bequem über die Paketverwaltung installieren. Wenn das nicht geht, hilft es nur alles selber zu machen.

Von http://code.google.com/p/memcached/downloads/list zieht man sich kurz das Tar-Archiv.

Source code

1
2
3
4
5
$ tar -zxvf memcached-1.x.x.tar.gz
$ ./configure
$ make
$ make test
$ sudo make install


Diese Befehle schnell in das Terminal getippt und schon geht's los :)

Mit dem Aufruf "memcached -m 4" kann man beispielsweise den zugewiesenen Speicher festlegen (hier 4 MB). Je nach größe der Seite und den Daten sollte man da also schon eine realistische Größe wählen.

Im Internet finden sich zahlreiche HowTo's zum Thema sodass jeder für sich ein passenden finden sollte.

Wenn die Installation dann abgeschlossen ist kann man im Administrationsbereich den Cache auf MemCache umstellen und den Host angeben auf dem der Cachedienst läuft. Die meisten Leute werden dort einfach localhost oder die lokale IP angeben. Externe Cacheserver sind natürlich auch möglich.

Also probiert es doch mal aus ;)

Um die memcache-Funktionen in PHP nutzen zu können muss die passende Extension in der php.ini eingebunden werden. Aber auch dies wird in diversen Tutorials erklärt. Dies soll hier nur einen Denkanstoß geben wie man seinen Server etwas entlasten kann.

This article has been read 3,374 times.

Categories: Community Framework, Tipps und Tricks


Comments (18)

  • 18

    by ace02000 (Friday, March 4th 2011, 10:54am)

    Ich kann den memcached nur empfehlen!
    Rennt bei den Nutzern spürbar schneller ;)

  • 17

    by larshamm (Friday, January 7th 2011, 8:56pm)

    Ich verwende via Dotdeb PHP5.3.5 in suecex /CGDI Modus via dem Admin Tool Froxlor (Fork von SysCP meine ich)

    Jemand eine Idee wie man es da aktivieren kann ?

    Ich habe halt Debian Lenny x64 als OS und bereits den Befehlt aptitude ausgeführt um die o.g. Pakete apt-get install memcached php5-memcache damit installiert. Weiß nur nicht ob ich das nun dennoch irgendwo freischalten muss. (z.B. php.ini jeweils)


    edit: also das WCF muckt nicht rum und die Dateien werden wohl auch angelegt wenn ich mir die Cachde Daten ansehe.

    Allerdings bliebe dann noch die Frage nach der Firewall und wo ich den maximalen Ram dem WCF zuweisen kann.


    Muss ich auch bei Debian das noch absichern oder hat Memcache bzw aptitude das auch bereits erledigt mit dem einfachen Setup Befehl ?

    reicht bei mir nun wirklich in den Einstellungen des WCFs die Angabe localhost ?

  • 16

    by mto (Tuesday, August 24th 2010, 6:06pm)

    wunderbar, danke für die einführung.. habe das ganze nun im einsatz und es läuft wunderbar:

    Quelle MemcacheCacheSource
    Version 1.4.5
    Größe 1,74 MB
    Dateien 327
    (bereits nach 1min..)

  • 15

    by d0nut (Friday, December 25th 2009, 11:31am)

    Vielleicht wäre noch ein Hinweis angebracht, dass Memcache keine Authentifizierung mitbringt, ihr eure Server also noch unbedingt absichern müsst!!!

    http://www.easy-coding.de/wiki/allgemein….html#headline5

    Es ist ja relativ einfach hier mal alle Poster durchzuprobieren.

    BTW: Installation unter Debian ist nur eine Zeile
    apt-get install memcached php5-memcache

  • 14

    by Coolman (Sunday, December 6th 2009, 10:23am)

    Noch zur Info, sorry ich arbeite noch nicht so lange mit dem wbb3.1, daher ist es für mich etwas neu und ich möchte hierzu noch was hinzufügen.

    Den Cache Speicher von MemCache kann man unter Protokoll/Carche im ACP löschen.

    Damit kann man Darstellungsfehler beheben.

    Beispiel: Ich hatte Gestern das G-Map neu Installiert und dass zum Test 3 mal, da ich hier eigene Änderungen vorgenommen hatte. Ich Wunderte mich in den 2 letzen Fälle wieso die Sprachdateien falsch angezeigt wurden, nach dem Löschen des Caches war wieder alles ok.

  • 13

    by Coolman (Saturday, December 5th 2009, 6:59pm)

    So heute habe ich Ihn wieder eingeschaltet und bisher läuft alles im Fertigem Forum ohne Probleme.

    Gruß Gero

  • 12

    by Coolman (Saturday, December 5th 2009, 5:12am)

    Teil1.
    Ich habe das auch mal auf meinem Server eingerichtet und getestet. Lief soweit alles sehr gut. Gut in einem Testforum wo nichts los ist wird man auch kein Unterschied fest stellen.

    Mittlerweile habe ich aber auf das 3.1 umgestellt und werde es in Zukunft ausgiebig testen.

    Noch ein kleiner Hinweis! Als ich in meinem Test Forum zuvor Test Foren hatte und dann ein Import aus meinem Aktuellem Forum machte, wunderte ich mich nicht schlecht, warum zwar im ACP alle Foren enthalten waren, in der Statisik alle User enthalten waren und auch alle Themen und Beiträge, nur das Forum zeigte immer noch die Test Foren und alle User und Themen mit Beiträge waren nicht vorhanden.

  • 11

    by Coolman (Saturday, December 5th 2009, 5:12am)

    Eine Wartung brachte hier kein Erfolg, es blieb alles beim altem. In der Datenbank waren alle Foren usw. enthalten. Die Wartung der Statistik zeigte Plötzlich ein Bild des ACPs an.
    Teil2.
    Lösung war: Den Memspeicher wieder umzustellen und auf den alten Cache Speicher umzustellen und den Cache Speicher Manuell oder per Admin Tool2 zu löschen. Dann war alles Plötzlich wieder da.

    Habe aber nicht versucht zuvor den Cache Speicher im Forum gleich zu löschen. Vielleicht hätte dieses auch schon ausgereicht.

    Gruß Gero

  • 10

    by larshamm (Tuesday, December 1st 2009, 8:00pm)

    Habe das jetzt auch mal eingerichtet und installiert. Doch woran kann ich erkennen ob der Memcache auch arbeitet. Ich kann bisher keinen Geschwindigkeitsvorteil feststellen, dennoch muss ja irgendwo ersichtlich sein ob der Memcache funktioniert.

  • 9

    by Hawkes (Thursday, November 26th 2009, 6:57am)

    Wenn man die Sessiondaten mitspeichern möchte sollte man je nach Forumsgröße schonmal 50 MB und mehr locker m achen, da es unschön wäre, wenn der Cache überläuft, falls eine Suchmaschine mal 500 Bots im getarnten Modus auf die Seite schickt.

  • 8

    by Rothen (Wednesday, November 25th 2009, 11:28pm)

    so hab das ganze auch einmal ausprobiert :)

    Und ich muss sagen die kleine Einführung hat geholfen ^^
    (Auch wenn ich auf meiner Seite bisher noch keinen wirklichen geschwindigkeitsvorteil erkennen konnte)

  • 7

    by Tatzelwurm (Wednesday, November 25th 2009, 9:44pm)

    @larshamm
    Was soll den passieren, der Cache ist leer und wird neu geschrieben. Es ist ja so das der Cache aus den Daten erstellt wird und nicht die Daten aus dem Cache, als kann ja nichts verloren gehen. :)

  • 6

    by Uzimaster (Wednesday, November 25th 2009, 9:38pm)

    Da passiert nichts. Sobald der Server wieder läuft werden die Caches neu erstellt. Das gleiche passiert auch wenn du die Dateien des lokalen Caches löschst.

  • 5

    by larshamm (Wednesday, November 25th 2009, 7:59pm)

    Was passiert eigentlich wenn der Server neustarten muss aufgrund eines Fehlers, oder der RAM abschmiert, können dadurch effektiv Schäden am Forum enstehen ?
    Zu welchen Problemen könnte dies sonst noch führen (nachdem der Server wieder läuft versteht sich...)

  • 4

    by LiaraAlis (Wednesday, November 25th 2009, 10:58am)

    Also ich habe für mich 10 MB genommen. Laut Cache-Informationen des WBB sind knapp 3,5MB belegt. Es handelt sich hier um das pokeforum.de, da kannste ja etwas hochrechnen.

  • 3

    by Uzimaster (Wednesday, November 25th 2009, 10:02am)

    Nun, das kommt darauf an ob man die Session-Daten auch dort speichern lässt. Für den normalen Boardbetrieb reichen 5 MB allemal. Für die Sessiondaten braucht man mitunter ein weinig mehr. Da hilft ein Blick in die Datenbank ;)

  • 2

    by Zollern (Wednesday, November 25th 2009, 9:37am)

    Danke für den Beitrag, ich habe nur eine Frage:
    - "Je nach größe der Seite und den Daten sollte man da also schon eine realistische Größe wählen." Was ist denn eine solch "realistische Größe"? Gibt es da Erfahrungswerte oder Größen, an denen man sich orientieren kann?

  • 1

    by LiaraAlis (Wednesday, November 25th 2009, 8:36am)

    Vielen Dank für den kleinen Anstoß! Mit ein bisschen Suchen in Google scheint es so, als würde es jetzt laufen. In der phpinfo() wird auf jeden Fall eine Verbindung angezeigt. Mal eine Weile beobachten.

Blog navigation

Next article

Was kümmert mich Performance ...

by Uzimaster (Thursday, November 26th 2009, 6:10pm)