Plesk, Caching und Redis

Mittlerweile ist es ja keine Seltenheit mehr auf caching Technologien zu setzten, um Last vom Server zu nehmen. Für PHP (>=5.5)  gibt es einige Möglichkeiten Caching zu betreiben. Jedoch muss man unterscheiden zwischen Byte- und Datacache:

Im Bytecache wird das geparste PHP script abgelegt, sodass nicht jedes mal neu geparst werden muss. Im Datacache hingegen liegen die tatsächlichen Daten, welche meistens aus Datenbanken geladen werden.

Für den Bytecache gibt es den OpCache von Zend, welcher seit 5.5 mit PHP automatisch mitgeliefert wird. Ich kenne auch keinen anderen weiteren Bytecache, sodass dieser zu bevorzugen ist.

Um Daten zu cachen gibt es u.a. APCu oder xCache als lokale Variante. Diese sind PHP Extensions und müssen seperat kompiliert werden.

Plesk 12.0.18 Installationen haben aber ein Problem wenn gecached werden soll, da das „Design“ dem Caching im Weg steht. Bei Plesk Installationen wird standardmäßig Apache2 mit FastCGI als PHP Handler verwendet, welches auch so gut funktioniert. Das Problem ist, dass jedes mal ein PHP Prozess geforked wird und nach einer gewissen Zeit wieder terminiert wird. Die Konsequenz ist, dass jedes mal ein neuer Prozess gestartet wird und alle Daten neu geladen werden müssen auch wenn Caching Technologien eingesetzt werden.

Eine Lösung wäre nginx + PHP-FPM anstatt FastCGI zu nutzen, da dort meines Wissens der Cache im Speicher erhalten bleibt.

Die bessere Lösung finde ich ist, der Einsatz von redis. Redis ist ein Key-Value Cache, der zur Kategorie der NoSQL Datenbanken gehört und wahnsinnig schnell sein soll. Auf redis bin ich mehr oder weniger zufällig gestoßen als ich die neueste Beta von ownCloud getestet habe. OwnCloud bietet die möglich, ab Version 8.1, zu definieren welcher Cache genutzt werden soll. Weitere Recherchen im Internet machten mich neugierig und die Artikel klangen alle sehr vielversprechend. Alternativ wäre noch Memcache zu erwähnen, welcher ähnliche Funktionen besitzt, aber redis ist mir „sympatischer“.

Die Installation von redis ist denkbar einfach:

  1. Aktuelle Quellen runterladen und entpacken
  2. ./configure, make, make install
  3. Zu letzt noch das Startscript installieren utils/install_server.sh
  4. Fertig

Damit redis mit PHP kommunizieren kann, gibt es einmal die Bibliothek Predis und das Modul PHPredis. Ich benutze lieber das PHP Modul, da es schon einmal kompiliert worden ist und – hoffentlich – performanter ist.

Für WordPress und Drupal gibt es Plugins, um redis zu nutzen. Das redis-object-cache Plugin für WordPress nutze ich hier und ist auch sehr einfach und schnell zu konfigurieren. Leider habe ich das Problem, dass nicht die richtige redis Datenbank genutzt wird. Dank eines Präfixes ist das nicht so wild, aber schön wäre es trotzdem. Bis jetzt konnte ich auch nicht herausfinden wo das Problem liegt (redis Server, PHP Extension, Plugin etc.).

Das Ergebnis dieser Mühen ist jedoch Wahnsinn! WordPress lädt um ein vielfaches schneller und dadurch, dass die Daten persistent sind, bleibt die Leistung auch konstant gut. Auch Drupal und ownCloud laden gefühlt schneller.

Mein Fazit ist, dass ich jeden redis nur ans Herz legen kann, da es echt schnell ist und verhältnismäßig wenig Aufwand ist diesen bereitzustellen. Weitere Interessante Informationen findet man z.B. auf Wikipedia und GitHub.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.