Schnellere Typo3-Antwortzeiten

Typo3 generiert die Webseiten im Prinzip bei jeder Anfrage aufgrund der Daten und Abbildungsvorschriften in der Datenbank. Damit ist das System im Bezug auf Geschwindigkeit gegenüber statischen Seiten klar im Hintertreffen.

 

In Typo3 eingebaute Caches verbesseren die Antwortgeschwindigkeit. Beim Schreiben von Erweiterungen ist deshalb darauf zu achten, dass diese auch von diesem Mechanismus profitieren. Weitere Möglichkeiten der Leistungssteigerung bieten Optimierungen der Datenbank, in der Ausführung des php-Codes oder in der Behandlung der http-Anfragen.

 

Cluster mit vorgeschaltetem Loadbalancer sind für grosse, stark frequentierte Seiten zwingend. Oft lassen sich aber schon mit deutlich kleinerem Aufwand befriedigende Resultate erziehlen.

 

MySQL

Teilweise verbessern schon einfache Optimierungen im Datenbankzugriff das Antwortverhalten. So empfiehlt es sich die Anzahl paraller Zugriffe zu erhöhen, den Log einzelner Zugriffe im Produktivsystem abzuschalten und bei genügend RAM die Caches zu vergrösseren. Dazu sind in der Datei my.conf die Werte der entsprechenden Variablen neu zu setzen. Einen Einstieg in spezifische Benchmarks bieten für uns die Parameter:

 

max_connections = 100
query_chace_limit = 2M
query_cache_size = 64M
query_cache_type = 1
table_cache = 256
key_buffer_size = 64M
log-bin    

php

Code-Optimierung und -Caching bringen in vielen Fällen einen deutlichen Leistungssprung. Dies erledigen einerseits der Zend Optimizer oder der frei verfügbare eAccelerator. Wir benützen die zweite Lösung und aktivieren diese in der Datei php.ini mit dem Eintrag:

eaccelerator = 1

Apache

Der http-Server ist der erste Ansprechspartner in einer Anfrage. Was hier erledigt werden kann, belastet die weitere Kette nicht. Erste Optimierungen bestehen darin die Anzahl paralleller Prozesse soweit zu reduzieren, dass das Gesamtsystem noch unterhalb seiner Leistungsgrenze arbeitet, den Loglevel herunter zu setzen und wenn möglich das überschreiben der Konfigurationsdateien (htaccess) zu verbieten. Mögliche Werte sind:

MaxClient 32
Loglevel warn
AllowOverride None

Die grösste Leistungssteigerung ist möglich, wenn der Apache über mod_proxy die Anfrage direkt aus seinem Cache beantworten kann. Erst wenn der http-Proxy die Antwort nicht kennt, wird diese über Redirect-Regeln an einen dahinter liegenden, zweiten http-Server weitergeleitet. Eine mögliche Verbesserung der Sicherheit der Webseite ist ein erwünschter Nebeneffekt dieser Konfiguration. Als Beispiel für eine Weiterleitung soll der folgende Regelsatz dienen:

<VirtualHost myappli.itos-gmbh.com>
DirectoryIndex index.html index.php
DocumentRoot /service/www
ServerName myappli.itos-gmbh.com
ServerAlias www.myappli.itos-gmbh.com
CustomLog /var/log/apache2/myappli/access.log combined
ErrorLog /var/log/apache2/myappli/error.log
RewriteEngine On
RewriteRule ^/(.*) "http://myappli.itos-gmbh.com:8080/$1" [proxy]
ProxyPassReverse / "http://myappli.itos-gmbh.com:8080/"
ProxyPass / "http://myappli.itos-gmbh.com:8080/"
#RewriteOptions inherit
</VirtualHost>  

Weitergehende Informationen zum Thema Typo3-Beschleunigung finden sich unter anderem im Typo3 Wiki.

Nach Oben