Einleitung

Durch den extensiven Einsatz von mod_rewrite wird natürlich auch die Performance in Mitleidenschaft gezogen. mod_rewrite ist bekannt dafür, dass es eine Leistungseinbusse darstellt. Diese Eigenschaft werden wir innerhalb des SEO Modul nie verbessern können, aber ich werde weiter unten aufzeigen, dass es Mittel und Möglichkeiten gibt, dem trotzdem entgegen zu wirken.

MySQL Optimierung

Was generell für alle Foren sehr wichtig ist, ist die Datenbankoptimierung auf Serverebene. MySQL kommt mit einer Standardkonfiguration, die für alle Einsatzzwecke gut zurecht kommen soll (was ja auch verständlich ist). Für den Einsatz von Foren, gibt es aber Konfigurationsmöglichkeiten, die die Performance für diese Zweck des Einsatzes STARK verbessern. Da dies aber individuell für jeden Server berechnet werden müssen, kann hier keine allgemeine Anleitung gegeben werden. Viele Punkte spielen dabei eine Rolle, wie PHP Version, MySQL Version, Linux Distribution, Hardware, u.s.w.

Aktuelle PHP Version

In aktuellen PHP Version wurde sehr stark an der Performance gearbeitet. Ein Update von beispielsweise Version 5.0.5 auf 5.1.2 stellt einen enormen Geschwindigkeitsschub für das Parsen der PHP Dateien dar. Es gibt also zwei Gründe, die für eine aktuelle PHP Version sprechen: SICHERHEIT und PERFORMANCE. Diese beiden Gründe lassen sich meist nicht so leicht vereinbaren, aber hier triff es zu!

Caching

Eine sehr effektive Methode um Performance zu gewinnen ist das Cachen der PHP Seiten. Es gibt zwei populäre Lösungen dafür: APC und eAccelerator. Bevor man sich aber für den Einsatz entschließt, sollte man sich darüber klar sein, für was der Cache verwendet werden soll:

  • Assozierter Array Wenn es sich um ein Skript mit einer kleinen Datenmenge handelt.
  • APC / eAccelerator Wenn es sich um einen Webserver handelt, der für die Datenmenge des Caches ausgelegt ist. Auch für kleine Datenmengen eigentlich sich dies sehr gut.
  • memcached Wenn die Cache-Grösse auf mehrere Server verteilt werden muss oder auch größere Datenmengen gecached werden müssen, ist memcached die richtige Wahl.
  • Datei-Cache Wenn Daten über einen längeren Zeitraum gecached werden sollen oder wenn der Traffic zwischen Datenbankserver und Applikationsserver reduziert werden soll.
  • Query Cache Wenn kein anderer Cache greift
  • eine Kombination aus verschiedenen Caching-Mechanismen Wie sich die Kombination zusammensetzt lässt sich nicht verallgemeinern und kommt auf den individuellen Fall an. Z.B. für ein vBulletin Forum ist die Kombination APC/memcached und Query Cache eine gute Wahl, allerdings würde ich diese Konstellation auch nur für sehr große Boards empfehlen.

Rootserver

Für große Boards gibt es eigentlich nur eine Möglichkeit, die Performance hinzu bekommen. Und das ist ein Rootserver, der genau für diesen Zweck optimiert ist. Ein Mittelmaß stellt ein Managed Server dar, weil er den Vorteil hat, dass man kein Wissen für Linux mitbringen muss und keine anderen Hosting Kunden auf dem Server sind. Er hat aber einen entscheidenden Nachteil: man kann ihn nicht für das Forum optimieren! Ein Forum, dass mehr als 10.000 Mitglieder hat oder im Durchschnitt immer mehr als 50-80 Mitglieder gleichzeitig Online sind, sollte IMMER einen Rootserver für die erforderliche Performance einsetzten. Die nächste Ausbaustufe wäre dann, dass man zwei Rootserver mietet, einen für die Datenbank und den anderen für den Webserver, um die Last zu verteilen.

Cluster

Wenn die Aufteilung zwischen Webserver und Datenbankserver nicht mehr ausreicht, muss man zur Cluster Lösung greifen. Das bedeutet, dass mehrere Rechner einen Dienst bewältigen. Das ist für sehr große Boards die einzige Möglichkeit, eine gute Performance zu erziehen (mehrere 1000 Benutzer gleichzeitig).

Aktualisiert: