Blogeinträge von Tobias Kalbitz

Technologie
TYPO3 Performanceoptimierung
von Tobias Kalbitz am

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.

Interessieren auch Sie sich für technische Anwendungssysteme? Dann informieren Sie sich doch einfach über unser Schulungsangebot. Oder Sie melden Sie sich bei uns, entweder telefonisch unter +49 4105 56156-99, per Mail an info@initos.com oder über unser Kontaktformular.

 

Lesen
Ältere Blogeinträge von Tobias Kalbitz
Technologie
Magento meets Actindo ERP — Konnektorprobleme
von Tobias Kalbitz am
Technologie
Magento Performanceoptimierung
von Tobias Kalbitz am
Technologie
EmailStatusSender – Benachrichtigungen bei Mantis Events
von Tobias Kalbitz am
Technologie
Erfahrungsbericht: Evolution unter Windows 7
von Tobias Kalbitz am
How-To, Technologie
Postgresql LDAP Authentifizierung mittels PAM
von Tobias Kalbitz am
zurück zur Übersicht