TYPO3 Performanceoptimierung

veröffentlicht in Consulting am 14. Mrz. 2012 Tags: , , , ,

Ein neuer Kunde nutzt TYPO3 als CMS, hat aber einige Probleme mit der Geschwindigkeit. Er fragte uns, ob wir einen Blick auf das System werfen können. Die Maschine entpuppte sich als VMware Instanz mit zwei CPUs, 2 GB Speicher und einem Ubuntu 10.04 LTS. Einige Optimierungen waren bereits umgesetzt, wie beispielsweise die Nutzung von  mod_deflate in Apache.

Die initiale Optimierung bestand im Installieren eines PHP-Bytecode-Caches. Da die Ubuntu-LTS-Version kein aktuelles APC mitbringt, installierten wir über „pecl install apc“ die neuste Version und aktivierten sie für die Apache Instanz. Die Größe des Caches erhöhten wir durch eintragen der Zeile „apc.shm_size=128M“ in der Datei „/etc/php5/conf.d/apc.ini“ auf 128MB und im selben Moment erhöhten wir auch die Anzahl des allokierbaren Shared Memories auf 256MB. Dies geschieht für das laufende System durch ausführen von „echo 268435456 > /proc/sys/kernel/shmmax“. Die Änderung wird durch einen Eintrag in die Datei /etc/sysctl.conf über einem Systemneustart persistent gemacht: „kernel.shmmax=268435456“.

Im nächsten Schritt behoben wir die  wichtigsten Google PageSpeed Meldungen.  Das größte gemeldete Problem waren die fehlenden Cacheheader für Bilder. Durch das Kommando „a2enmod expires“ wird das Modul zum Setzen von Cacheheadern aktiviert und ein Eintrag von:

ExpiresActive On
ExpiresDefault "access plus 1 month"

in der Datei „/etc/apache2/mods-enabled/expires.conf“ sorgt dafür, dass alle statischen Inhalte für mindestens einen Monat ab dem Zugriff gecached werden. YSlow empfahl noch das deaktivieren des FileETag-Headers, was wir durch Eintrag „FileETag none“ in der Datei „/etc/apache2/httpd.conf“ auch taten.

Unser letzter Schritt bestand im Aktivieren des  installierten Memcached-Servers als Backendcache. Dies wird in der Datei „typo3conf/localconf.php“ der TYPO3 Installation durchgeführt, durch Eintragen der Zeilen:

//use memcached backend as cache
$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';
 
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['backend'] = 't3lib_cache_backend_MemcachedBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['options'] = array(
 'servers' => array('localhost:11211'),
 );
 
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['backend'] = 't3lib_cache_backend_MemcachedBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['options'] = array(
 'servers' => array('localhost:11211'),
 );
 
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['backend'] = 't3lib_cache_backend_MemcachedBackend';
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['options'] = array(
 'servers' => array('localhost:11211'),
 );
 
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['dbal'] = array(
    'backend' => 't3lib_cache_backend_MemcachedBackend',
    'options' => array(
        'servers' => array('localhost:11211'),
    )
);

Der Kunde war mit der erreichten Performance zufrieden und wir boten ihm noch weitere Optimierungen an:

  • Optimierung des MySQL-Servers
  • Aufteilen der Bilder- und JS-Dateien auf unterschiedlicher Domains
  • Nutzung eines schnelleren Webservers wie nginx für statische Inhalte
  • Nutzung von Varnish als Reverse Proxy

Diese Vorschläge will er eventuell in der Zukunft adaptieren.

 

Über Tobias Kalbitz

Tobias Kalbitz ist Experte für Software Architektur, skalierbare Systeme und Hochverfügbarkeit. Seine Erfahrungen in der Optimierung von Software helfen Kunden regelmäßig ihren Softwarestack und Hardwareressourcen zu konsolidieren.

Kommentare deaktiviert für TYPO3 Performanceoptimierung

Kommentare sind gesperrt.