Tag Archives: eaccelerator

Wordpress-Optimierung

22 Okt

“A Never Ending Story”… könnte man schon fast sagen. Ich betreibe einen VServer bei Server4You um ein paar Webseiten laufen zu lassen. Der Server an sich ist ganz gut und erfüllt seine Dienste. Installiert ist CentOS (mit Plesk) sowie httpd 2.2.14, PHP 5.2.11 und MySQL 5. Alles zusammen eine recht stabile Mischung, aber das kleine i-Tüpfelchen fehlt – Die Performance!

Ein leidiges Thema, vor allen wenn es um Wordpress geht, aber auch dies lässt sich mit ein wenig Aufwand realisieren. Um deutlich mehr Performance zu gewinnen, habe ich mir den PHP-eAccelerator zugelegt und habe nach einigen Benchmarks auch eine höhere Leistung erzielen können, als ohne. Es ist nicht schwer ihn zu installieren, nur sollte man unbedingt darauf achten, diesen als PHP-Extension und nicht als Zend-Extension zu installieren. Es funktioniert zwar auch, aber als reine PHP-Extension läuft’s nun mal besser. ;-)

Als zweites Gimmick habe ich 2 Werte in der wp-config.php verändert bzw. reingeschrieben:

define(‘SAVEQUERIES’, true);
define(‘WP_CACHE’, true);

Diese beiden Werte helfen dabei, nicht jeden einzelnen Schrott immer wieder zu laden, wenn eine Seite aufgerufen wird. Allerdings solltet ihr dafür noch den Ordner wp-content/cache/ erstellen und diesen mit dem CHMOD 777 ausstatten, sofern das noch nicht getan ist.

Ein weiteres gutes Plugin um die Performance zu checken, ist das Plugin von Bueltge und nennt sich Debug Queries. Es zeigt euch die Queries und deren Ausführungszeit an. Je nach Status der Queries, zeigt es Verbesserungsvorschläge an, wie z.B. einer aus der wp-config.php Datei.

Nicht zu vergessen ist das Apache-Tuning. Ohne das, läuft gar nichts! Ich poste euch mal ein teil meiner Veränderungen in der /etc/httpd/conf/httpd.conf:

Timeout 30
KeepAlive off

<IfModule prefork.c>
StartServers 3
MinSpareServers 3
MaxSpareServers 10
ServerLimit 256
MaxClients 85 #Maxclients = Arbeitsspeicher / 12 MB – Danke Markus!
MaxRequestsPerChild 2000
</IfModule>
<IfModule worker.c>
StartServers 1
MaxClients 85
MinSpareThreads 1
MaxSpareThreads 3
ThreadsPerChild 5
MaxRequestsPerChild 250
</IfModule>

Folgende Zeilen auskommentieren:

#LanguagePriority en ca…
#ForceLanguagePriority Prefer Fallback

Auch einen deutlichen Performance-Schub bringt es, wenn man unbenötigte Module auskommentiert. Bei mir in der Config sind lediglich folgende Module am leben gelieben:

LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

Probiert euch mal am eAccelerator und Apache aus und schaut mal, ob ihr damit ein paar positive Erfolge erzielen könnt.

Update #1:

Ganz vergessen, natürlich könnt ihr auch noch Einstellungen in der MySQL-Config machen, sofern ihr MySQL nutzt. Dazu habe ich folgende Werte in der /etc/my.cnf

skip-innodb
key_buffer = 2M
myisam_sort_buffer_size = 4M
read_buffer_size = 512K
read_rnd_buffer_size = 4M
max_allowed_packet=4M
thread_stack=128K
thread_cache_size=8
query_cache_limit=512K
query_cache_size=4M
max_connections=85 #Ähnlich wie in der httpd.conf
long_query_time=3
skip-bdb
table_cache=1500
Nicht vergessen, dass ihr nach Änderungen die Services neu starten müsst!