Mit E-Mail-Diensten muss sich jeder Administrator früher oder später einmal beschäftigen. Das zur CeBIT erscheinende ADMIN 02/2012 gibt dazu Praxis-Tipps und ... (mehr)

Performance

Für kleinere Systeme, die ein paar hundert Benutzer bedienen, ist eine Horde-Installation ohne weitere Optimierungsschritte durchaus hinreichend. Horde kann aber mit etwas Optimierung durchaus auch mit größeren Benutzergruppen umgehen. So bedient die portugiesische Telekom SAPO mehrere Millionen Kunden mit einer über einige Server verteilten Horde-Installation.

Grundlegende Performance-Tipps, die für die meisten Horde-Installationen nützlich sind, sammeln die Horde-Entwickler in einem eigenen Dokument [3] und tragen hier die wichtigsten Erkenntnisse aus ihrer langjährige Erfahrung beim Tuning von Horde zusammen. Die Anweisungen beschäftigen sich zum größten Teil damit, wie man PHP und Apache auf ein Maximum an Geschwindigkeit und ein Minimum an verbrauchten Ressourcen optimiert.

An erster Stelle steht hier ein Bytecode-Cache wie APC [4] für den Webserver. Für PHP-Applikationen auf einem Produktivserver ist dieses Modul Pflicht, denn es ist wenig sinnvoll, dass der Webserver den PHP-Code bei jedem Request neu einliest und in Byte-Code transformiert, wenn sich der installierte Code sowieso nur in großen Zeitabständen änder, üblicherweise erst bei einem Update. Mit APC erfolgt diese Umwandlung nur einmalig – eine signifikante Einsparung. Nach einem Update muss der Administrator den Webserver dann allerdings neu starten und damit den APC-Cache löschen, sonst wird weiterhin der alte Code verwendet. Unter Debian erschöpft sich die Installation des APC-Cache in einem Dreizeiler:

apt-get install php-apc
echo "apc.stat=0" >> /etc/php5/conf.d/apc.ini
/etc/init.d/apache2 restart

Ebenfalls zu empfehlen ist der Einsatz schneller Caching-Lösungen wie Memcache [5]. Horde kann an vielen Stellen einmal bereitgestellte Information im Cache zwischenlagern und bei weiteren Zugriffen deutlich schneller ausliefern. Hier genügt unter Debian die Installation der Pakete »memcached« und »php5-memcache« und die Anpassung der Konfiguration des »Cache-System« im Administrations-Frontend von Horde.

Neben den allgemeineren Optimierungsmöglichkeiten beim Webserver oder PHP erlaubt auch Horde selbst einige effektive Optimierungen. Wichtig ist zum Beispiel das Autoload-Caching. Der Autoload-Mechanismus von PHP erlaubt es, Klassendefinitionen mit einem Dateipfad zu verknüpfen. Trifft der PHP-Compiler auf einen unbekannten Klassennamen, so wandelt er diesen Namen in einen Dateipfad um und lädt die entsprechende Datei mit dem darin befindlichen Code, der die fehlende Klasse definiert. Die Umwandlung des Namens führt der Horde-Code im Normalfall bei jedem eintreffenden Request erneut durch und benötigt dafür spürbar Rechenzeit, obwohl sich die Zuordnung von Klassennamen in Dateipfade im Normalfall nur bei einem Update der Software ändert. Also kann die Anwendung ähnlich wie bei APC vom Caching profitieren. Diese Form der Beschleunigung kann der Administrator aktivieren, indem er das dafür notwendige Paket installiert:

/var/www/webmail/pear/pear -c /var/www/webmail/pear.conf install -a -B horde/horde_autoloader_cache

Die Liste möglicher Optimierungen ist deutlich länger als der hier verfügbare Raum. Das bereits erwähnte Optmierungs-Dokument sei deshalb jedem ans Herz gelegt, der eine sehr performante Horde-Installation betreiben möchte.

Für Webmail und die IMAP-Kommunikation gibt es ein ähnliches Dokument [6], das sich auf die Optimierung der IMAP-Kommunikation konzentriert. Es ist für den Administrator eines frequentierten Servers eine unverzichtbare Wissensquelle.

Update

Wer sich bis hierher durchgearbeitet hat, kann sich erst einmal eine Verschnaufpause gönnen. Irgendwann steht aber vermutlich dann ein Upgrade des Systems an, wenn eine neue Horde-Version erscheint. Die Anwendung besteht aus mehreren Dutzend Modulen, deren Aktualisierung wohl leicht einen ganzen Tag in Anspruch nehmen kann. Doch weit gefehlt. Das Update der Applikation erschöpft sich in einem einzigen Befehl auf der Kommandozeile:

pear upgrade -a -B horde/webmail

Danach muss im Administrations-Frontend eventuell noch die Konfiguration aktualisiert und die Datenbank auf die neueren Schemata migriert werden. Beides ist aber automatisiert und mit wenigen Klicks erledigt.

An dieser Stelle sollte deutlich werden, warum sich die Entwickler dazu entschlossen haben PEAR zu verwenden. In weniger als einem Jahr hat das Horde-Team es geschafft, über 1000 neue Releases über den PEAR-Server zu veröffentlichen. Und das, ohne dass die Nutzer auf den Mailing-Listen Sturm gelaufen wären. Im Gegenteil: Die Entwickler können Releases mit Korrekturen oder auch Sicherheitsupdates schneller als früher veröffentlichen, die Administratoren wiederum deutlich einfacher installieren. Der Verzicht auf die sonst üblichen Tar-Archive und das automatisierte Datenbank-Update reduziert die Hemmschwelle zum sonst eher mühsamen Update deutlich. Damit verbunden ist eine deutlich erhöhte Sicherheit der Installation, denn gerade eine veraltete Webmail wird leicht als Spam-Schleuder missbraucht, wenn die falschen Leute sie kapern.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019