Probleme mit Performance und Stabilität behoben

09.04.2010
Simon

Sowohl über die Osterfeiertage, als auch gestern (8. April 2010) gab es teilweise massive Probleme mit der Geschwindigkeit von Billomat. Erklärung, Ursache, Lösung, Optimierung und eine Entschuldigung.

Technischer Hintergrund: Wie arbeitet Billomat?

Billomat basiert technisch auf dem sehr ausgereiften und professionellen Zend Framework und benutzt dort unter anderem massiv die Lokalisierungskomponente. Dort werden z.B. Währungsinformationen, Übersetzungsmethoden, Datums- und Zahlenformate zur Verfügung gestellt. Diese Informationen werden in XML-Dateien vorgehalten. Da das Auslesen der für Billomat benötigten Informationen  aus den XML-Dateien sehr viel Rechenleistung benötigt, werden diese in Cache-Dateien zwischengespeichert. So weit, so gut.

Meine Cache, dein Cache

Die Cache-Dateien werden automatisch vom Benutzer des Webservers angelegt und haben aus Sicherheitsgründen nur beschränkte Berechtigungen.

Seid dem Launch der Abo-Rechnungen ist der Webserver-Benutzer aber nicht mehr der einzige, der diese Cache-Dateien erzeugen und auslesen muss. Für die Abo-Rechnungen läuft ein sogenannter Cronjob, der über einen Job-Prozessor die Rechnungen erstellt und verarbeitet, ohne dass eine Nutzerinteraktion notwendig wird.

Dieser Cronjob benötigt ebenfalls Lokalisierungsinformationen, lief aber nicht unter dem gleichen Benutzer wie der Webserver. Das hatte zur Folge, dass es vorkommen konnte, dass Cache-Dateien von 2 verschiedenen Benutzer existierten, die gegenseitig keine Schreibrechte hatten.

Versuche des Webservers, eine Cache-Datei des Cronjobs zu aktualisieren (oder umgekehrt), schlugen also mangels ausreichender Berechtigung fehl. Damit wiederum kam das Zend Framework nicht klar und erzeugte eine Endlosschleife, bis irgendwann ein Timeout eintrat.

Da besonders die Listenansicht der Dokumente für die Darstellungen der Beträge und Währungen auf die Lokalisierungskomponente angewiesen ist, war der Fehler dort am häufigsten zu bemerken. Aber weder die Sicherheit, noch die Daten selbst waren zu irgend einem Zeitpunkt gefährdet.

Die Lösung: Einer für alle!

Um diesem Dilemma zu entgehen, haben wir unseren Server jetzt so konfiguriert, dass dieser Cronjob ebenfalls vom Webserver-Benutzer ausgeführt werden. Damit gibt es keine Probleme mehr mit fehlenden Dateiberechtigungen zwischen unterschiedlichen Benutzern.

Monitoring und Kommunikation

Die Ursache zu dem seltsamen Verhalten von Billomat war sehr schwer zu finden, da zum einen unser Server die ganze Zeit über erreichbar war und problemlos funktionierte und zum anderen kein Bug in Billomat selbst vorlag. Es gab lediglich ein Problem mit Berechtigungen von Cache-Dateien.

Wir überwachen unsere Server 24 Stunden pro Tag und 7 Tage die Woche. Sobald auch nur eine Komponente nicht wie gewünscht funktioniert, werden sofort mindestens 5 Personen per SMS benachrichtigt und sorgen dafür, dass der Server so schnell wie möglich wieder auf die Beine kommt. Leider konnte dieser Fehler aber nicht von unserem Monitoring entdeckt werden. Deshalb verfeinern und optimieren wir jetzt unser Überwachungsnetz, damit wir auch in Zukunft pro-aktiv reagieren können, noch bevor Nutzer ein Problem bemerken.

Leider haben wir aber auch in der Kommunikation des Problems geschludert. Einige Nutzer fühlten sich im Stich gelassen. Obwohl wir das Problem sehr schnell angegangen sind und fieberhaft daran gearbeitet haben, war unser Engagement nach außen hin nicht immer ersichtlich. Deshalb werden wir unsere Kommunikationsprozesse unter die Lupe nehmen und verbessern, damit Billomat-Nutzer für die Zukunft besser und transparenter informiert sind. Besonders, wenn etwas mal nicht nach Plan läuft.

Wir möchten uns noch einmal in aller Form sowohl für die Unannehmlichkeiten durch die Performance-Einbußen als auch die mangelhafte Kommunikation entschuldigen. Unser oberstes Ziel war und ist, mit Billomat einen schnellen und einfachen Dienst zur Verfügung zu stellen, auf den man sich verlassen kann. Wir hoffen, mit dieser ausführlichen Erklärung einen weiteren Schritt in diese Richtung gemacht zu haben.

Tipp: In Zukunft werden wir noch stärker und schneller über unseren Twitter-Account @billomat über aktuelle, wichtige und interessante Neuigkeiten informieren.

Hinterlasse eine Antwort