WordPress und MySQL optimieren

Home / Blog / WordPress und MySQL optimieren

Gestern hatte ich  mit Gilly kurz über MySQL-Datenbanken und WordPress gesprochen. Gerade bei vielen Zugriffen auf ein Blog müssen MySQL und PHP einiges an Arbeit leisten. Bei vielen gleichzeitigen Zugriffen auf das WordPress Blog, kann es passieren das die Datenbank und das WordPress langsam oder gar nicht funktionieren. Damit dieses Verhalten etwas eingegrenzt wird, muss man zu einigen Optimierungstricks greifen.
Sofern möglich sollte man seine Hardware vom Server etwas optimieren. Manchmal reicht es schon aus CPU, RAM oder Festplatte auszutauschen. Rüstet man den Server mit mehr RAM aus, so können Datenbankabfragen in diesem zwischengespeichert werden oder mehr Speicher für die PHP-Engine reserviert werden. An die Festplattenperformance denken die wenigstens. In den meisten Servern werden heute SATA oder SATA2 Festplatten benutzt. Aufgrund von Datensicherheit und Redundanz wahrscheinlich auch noch im RAID-Betrieb. Leider kommt es auch oft genug vor, dass man zwar eine SATA2 Festplatte hat, diese aber nur mit SATA angesprochen wird. Das sollte man ändern, um mehr Geschwindigkeit zu bekommen. Wer noch mehr Geschwindigkeit rausholen möchte sollte gleich zu SAS-Festplatten greifen. Die sind noch einen Tick schneller und auch sicherer.
Wenn man keinen Einfluss auf die Hardware-Konfiguration hat, dann muss man es eben mit Software-Tricks versuchen. Die meisten von ihnen beruhen auf die Nutzung von zusätzlichen Caches.
Bei MySQL gibt es gleich mehrere Möglichkeiten die Performance zu optimieren. Die wichtigsten Optimierungsvariablen in der my.cnf sind wohl key_buffer_size und table_cache. Optimale Werte für einen Server mit mehr als 512 MB Speicher wären zum Beispiel: key_buffer=64M; table_cache=256; sort_buffer=4M; read_buffer_size=1M. Bei einem vServer von 1&1 hat man die Werte so eingestellt: key_buffer = 16M; table_cache = 64; sort_buffer_size = 512K; read_buffer_size = 256K. Um die optimale Performance zu schaffen, sollte man mit den Werten etwas herumprobieren. Eine dritte Möglichkeit gibt es bei MySQL aber noch, den Query Cache. Hierfür muss man in seiner my.cnf die Variablen query_cache_size, query_cache_type und query_cache_limit eintragen und mit Werten versehen. Näheres dazu findet man im Netz und in der Doku. Ich benutze bei einigen Blogs die Werte query_cache_limit = 1M; query_cache_size = 32M; query_cache_type = 1. Bis jetzt laufen diese ganz gut damit.
Um die Performance von PHP zu steigern bieten sich mehrere Lösungen an. Es reicht nicht immer aus der PHP-Engine mehr Speicher zuzuweisen, sondern man muss auch die Möglichkeit von Caching in betracht ziehen. Die gängigen Lösungen hierfür sind wohl ZEND und memcached. Eine kleine Übersicht der PHP-Beschleuniger gibt es hier.
Mit diversen Plugins für WordPress kann man auch dort etwas Performance rausholen. Wichtige Plugins hierfür sind zum Beispiel WP-Super-Cache und, sofern nötig, WP-Widget-Cache. WP-Super-Cache kann eigentlich alles was man braucht. Ist das Plugin aktiviert und konfiguriert, so werden bei Aufruf eines Blogposts eine statische Kopie davon in einem Verzeichnis abgelegt. Ruft jetzt wieder jemand diesen Post auf, dann kommt dieser aus dem Cache (statische Kopie) von WP-Super-Cache. Das ganze funktioniert so gut, dass ich es eigentlich standardmäßig in jeden Blog installiere.
Die vorgestellten sind einige Möglichkeiten. Aber es gibt sicherlich noch einige mehr. Manchmal liegt die Performance des Blogs auch nicht am Server, PHP, MySQL oder WordPress, sondern kann auch an der DNS-Auflösung liegen oder an der Einbindung von sehr vielen externen Skripts oder Bildern liegen.

Comments are closed.