Serveroptimierung Performance Tipps

alex's picture

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!

Unsere Buchempfehlung

Image of High Performance MySQL. Optimierung, Datensicherung, Replikation & Lastverteilung
Autor: Jeremy D. Zawodny, Derek J. Balling
Verlag: O'Reilly
Verkaufsrang: 193085
Das folgende Buch befasst sich ausführlicher mit dem hier genannten Thema. Wenn Du mehr über High Performance MySQL. Optimierung, Datensicherung, Replikation & Lastverteilung erfahren willst, empfehlen wir Dir diesen Artikel.

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).

Alle hier aufgeführten Informationen / Dokumentationen sind nur als Denkanstoß gedacht und wurden mit großer Sorgfalt erarbeitet. Es besteht jedoch kein Anrecht auf Vollständigkeit / Richtigkeit. Der Autor kann für eventuell verbliebene fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Gleiches gilt für entstandene Schäden bei unsachgemäßer Ausführung! Im Zweifelsfall immer einen Fachmann mit der Durchführung beauftragen!

Gerne bieten wir Ihnen hierfür unsere Consulting Dienste an. © Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten.