Archiv

Artikel Tagged ‘optimieren’

Wordpress Optimieren – Mit OptimizeDB Datenbank verkleinern

1. Juni 2009

In einem Wordpress-Blog fallen schnell Massen an Daten in der Datenbank an. Man kann diese mit dem Plugin OptimizeDB optimieren und die Größe unter Umständen auch reduzieren. Nun ist es in meinem Beispiel nicht dramatisch viel, jedoch sollte es sich in sehr großen Blogs etwas mehr lohnen.

Optimize DB für Wordpress

Optimize DB für Wordpress

OptimizeDB für Wordpress

Author: chris Categories: Plugins, Wordpress Tags: , ,

Wordpress Optimieren – HTTP-Requests verringern

1. Juni 2009

Wordpress ist von Natur aus eher etwas träge. Zwar hat sich das in den letzten Versionen schon verbessert, aber aufgrund des gleich gebliebenen Grundaufbaus gibt es immer noch viel zu tun um die Performance zu steigern. Warum und was gibt es denn zu verbessern?

Wordpress hat einen praktischen modularen Aufbau und nahezu jeder Webmaster verwendet mindestens ein zusätzliches Plugin um den Funktionsumfang zu erweitern. Das Problem ist, dass viele Plugins eigene CSS-Dateien und eigene (manche sogar mehrere) JavaScript-Dateien mitbringen. Das Problem liegt dabei auf der Hand. Die Anzahl der HTTP-Requests ist hoch und die Größe aller Dateien ebenfalls. Man kann beide Probleme beheben. Für Wordpress gibt es hierfür “PHP Speedy WP 0.5.2“. Das Plugin beschreibt sich selbst mit dem Satz:

Speeds up the display of your blog by combining your JS and CSS files, adding far future expires headers and GZIPing.

Das ist auch exakt, was das Plugin tut. Es kombinert JavaScript und CSS-Dateien und komprimiert sie danach.  Man kann in der Konfiguration sämtliche Option einzeln wählen.

PHP Speedy WP 0.5.2

PHP Speedy WP 0.5.2

Nachdem man die Konfiguration abgeschlossen hat aktiviert man das Plugin noch im Backend und schon tut es seine Dienste. Je nachdem wie viele Plugins man verwendet kann die Geschwindigkeitsverbesserung enorm sein, also es lohnt sich es zu probieren.

MySQL-Server Optimierung und Defragmentierung

20. Mai 2009

Wenn man selbst einen Rootserver betreibt und einen Apache, PHP und MySQL installiert hat heißt das noch lange nicht, dass sich jede Anwendung von allein optimal einstellt. Ich werde im Folgenden einmal die Optmierung des MySQL-Servers beschreiben. Sie ist wie eigentlich alles an Servereinstellungen einfach zu bewerkstelligen, wenn man nur weiß wie und wo.

Um die Werte der aktuellen Konfiguration des MySQL-Servers zu checken und eventuelle Fehler anzeigen zu lassen kann man sich von diversen Optmierungsscripts helfen lassen. 2 von ihnen, tuning-primer.sh und mysqltuner.pl, möchte ich hier einmal vorstellen. Außerdem ist die Defragmentierung fragmentierter Tabellen eine sinnvolle Maßnahme, die zusätzliche Performance bringen kann.

Wir laden zuerst tuning-primer.sh herunter,

wget http://www.day32.com/MySQL/tuning-primer.sh

setzen die notwendigen Rechte..

chmod 755 tuning-primer.sh

und rufen das Script auf mit

tuning-primer.sh

oder

sh tuning-primer.sh

Normalerweise wird die my.cnf, die ja optimiert werden soll, schon im korrekten Pfad erkannt. Das heißt die erste Frage kann mit nein beantwortet werden. Man sollte nun seinen Login “handy” haben und ja sagen. Nach Angabe der Root-Login-Daten für die SQL-Datenbank wird gefragt, ob eine my.cnf erstellt werden soll. Das kann man mit nein beantworten und die Prüfung der aktuellen Konfiguration rattert durch. Man guckt sich nun die Auswertung an.
Möglich wäre folgende Ausgabe:

Current max_connections = 70
Current threads_connected = 1
Historic max_used_connections = 1
The number of used connections is 1% of the configured maximum.
You are using less than 10% of your configured max_connections.
Lowering max_connections could help to avoid an over-allocation of memory
See "MEMORY USAGE" section to make sure you are not over-allocating

Die Analyse ist einfach zu deuten: Zuerst werden die aktuellen Einstellungen angezeigt, also maximale gleichzeitige Verbindungen sind 70 und eine ist hergestellt. Außerdem wurden maximal eine Verbindung gleichzeitig benutzt (habe den Server gerade neu gestartet). Darunter eine ausformulierte Deutung des Zustandes. tuning-primer denkt natürlich, dass die Anzahl der Verbindungen viel zu hoch eingestellt ist, dafür dass ich sie nicht nutze. Allerdings ist diese Analyse nicht repräsentativ, da tuning-primer noch nicht die Werte vom Abend kennt ;)

Eine weiter Anwendung zur Optimierung des mysql-Servers ist mysqltuner.pl, der sich gerade für Einsteiger etwas übersichtlicher gestaltet und die Hinweise eindeutiger formuliert.

Wir laden ihn einfach herunter:

wget http://mysqltuner.com/mysqltuner.pl

und vergeben die Rechte

chmod +x mysqltuner.pl

und führen es dann aus

./mysqltuner.pl

Auch hier sollte man wieder die Login-Daten parat haben und der Check beginnt. Das Resultat zeigt Fehler an (oder auch nicht) und die Verbesserungsvorschläge sehen dann z.B folgendermaßen aus:

General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    MySQL started within last 24 hours - recommendations may be inaccurate
    Reduce your overall MySQL memory footprint for system stability
    Enable the slow query log to troubleshoot bad queries
    When making adjustments, make tmp_table_size/max_heap_table_size equal
    Reduce your SELECT DISTINCT queries without LIMIT clauses
Variables to adjust:
    tmp_table_size (> 212M)
    max_heap_table_size (> 212M)

Der Vorteil, den mysqltuner mit sich bringt ist, dass die anzupassenden Variablen gleich genannt werden und man im einfachsten Falle diese Hinweise befolgt. Bei diesem Hinweis könnte ich also in meiner my.cnf (sie liegt bei mir in /etc/mysql/my.cnf) die vorgeschlagenen Werte erhöhen.

Defragmentieren:

Zuletzt noch ein kleiner weiterer Hinweis zur Performance-Steigerung der Datenbank – die Defragmentierung. Bitte VORSICHT bei Arbeiten an der mysql-Datenbank immer VORHER eine SICHERUNG erstellen. Hat man diese, so kann man

mysqlcheck -op --all-databases

eingeben und benötigt wieder einmal das root-Passwort der Datenbank um dann alle Datenbanken zu defragmentieren (kann eine Weile dauern).

Das waren drei Vorgehensweisen, die die Performance-Werte bei schlechter Voreinstellung deutlich verbessern kann und mehr aus einem Server herausholen können, es gibt natürlich noch viele weitere Methoden der Optimierung. Ich gucke mir demnächst auch mal die Optimierung des Apache-Servers an.