Probleme mit Performance und Stabilität behoben

09.04.2010

Sowohl über die Oster­fei­er­tage, als auch ges­tern (8. April 2010) gab es teil­weise mas­sive Pro­bleme mit der Geschwin­dig­keit von Bil­lo­mat. Erklärung, Ursache, Lösung, Opti­mie­rung und eine Entschuldigung.

Tech­ni­scher Hin­ter­grund: Wie arbei­tet Billomat?

Bil­lo­mat basiert tech­nisch auf dem sehr aus­ge­reif­ten und pro­fes­sio­nel­len Zend Frame­work und benutzt dort unter ande­rem mas­siv die Loka­li­sie­rungs­kom­po­nente. Dort wer­den z.B. Wäh­rungs­in­for­ma­tio­nen, Über­set­zungs­me­tho­den, Datums– und Zah­len­for­mate zur Ver­fü­gung gestellt. Diese Infor­ma­tio­nen wer­den in XML-Dateien vor­ge­hal­ten. Da das Aus­le­sen der für Bil­lo­mat benö­tig­ten Infor­ma­tio­nen  aus den XML-Dateien sehr viel Rechen­leis­tung benö­tigt, wer­den diese in Cache-Dateien zwi­schen­ge­spei­chert. So weit, so gut.

Meine Cache, dein Cache

Die Cache-Dateien wer­den auto­ma­tisch vom Benut­zer des Web­ser­vers ange­legt und haben aus Sicher­heits­grün­den nur beschränkte Berechtigungen.

Seid dem Launch der Abo-Rechnungen ist der Webserver-Benutzer aber nicht mehr der ein­zige, der diese Cache-Dateien erzeu­gen und aus­le­sen muss. Für die Abo-Rechnungen läuft ein soge­nann­ter Cron­job, der über einen Job-Prozessor die Rech­nun­gen erstellt und ver­ar­bei­tet, ohne dass eine Nut­zer­in­ter­ak­tion not­wen­dig wird.

Die­ser Cron­job benö­tigt eben­falls Lokalisierungsinformationen, lief aber nicht unter dem glei­chen Benut­zer wie der Web­ser­ver. Das hatte zur Folge, dass es vor­kom­men konnte, dass Cache-Dateien von 2 ver­schie­de­nen Benut­zer exis­tier­ten, die gegen­sei­tig keine Schreib­rechte hatten.

Ver­su­che des Web­ser­vers, eine Cache-Datei des Cron­jobs zu aktua­li­sie­ren (oder umge­kehrt), schlu­gen also man­gels aus­rei­chen­der Berech­ti­gung fehl. Damit wie­derum kam das Zend Frame­work nicht klar und erzeugte eine End­los­schleife, bis irgend­wann ein Time­out eintrat.

Da beson­ders die Lis­ten­an­sicht der Doku­mente für die Dar­stel­lun­gen der Beträge und Wäh­run­gen auf die Loka­li­sie­rungs­kom­po­nente ange­wie­sen ist, war der Feh­ler dort am häu­figs­ten zu bemer­ken. Aber weder die Sicher­heit, noch die Daten selbst waren zu irgend einem Zeit­punkt gefährdet.

Die Lösung: Einer für alle!

Um die­sem Dilemma zu ent­ge­hen, haben wir unse­ren Ser­ver jetzt so kon­fi­gu­riert, dass die­ser Cron­job eben­falls vom Webserver-Benutzer aus­ge­führt wer­den. Damit gibt es keine Pro­bleme mehr mit feh­len­den Datei­be­rech­ti­gun­gen zwi­schen unter­schied­li­chen Benutzern.

Moni­to­ring und Kommunikation

Die Ursa­che zu dem selt­sa­men Ver­hal­ten von Bil­lo­mat war sehr schwer zu fin­den, da zum einen unser Ser­ver die ganze Zeit über erreich­bar war und pro­blem­los funk­tio­nierte und zum ande­ren kein Bug in Bil­lo­mat selbst vor­lag. Es gab ledig­lich ein Pro­blem mit Berech­ti­gun­gen von Cache-Dateien.

Wir über­wa­chen unsere Ser­ver 24 Stun­den pro Tag und 7 Tage die Woche. Sobald auch nur eine Kom­po­nente nicht wie gewünscht funk­tio­niert, wer­den sofort min­des­tens 5 Per­so­nen per SMS benach­rich­tigt und sor­gen dafür, dass der Ser­ver so schnell wie mög­lich wie­der auf die Beine kommt. Lei­der konnte die­ser Feh­ler aber nicht von unse­rem Moni­to­ring ent­deckt wer­den. Des­halb ver­fei­nern und opti­mie­ren wir jetzt unser Über­wa­chungs­netz, damit wir auch in Zukunft pro-aktiv rea­gie­ren kön­nen, noch bevor Nut­zer ein Pro­blem bemerken.

Lei­der haben wir aber auch in der Kom­mu­ni­ka­tion des Pro­blems geschlu­dert. Einige Nut­zer fühl­ten sich im Stich gelas­sen. Obwohl wir das Pro­blem sehr schnell ange­gan­gen sind und fie­ber­haft daran gear­bei­tet haben, war unser Enga­ge­ment nach außen hin nicht immer ersichtlich. Deshalb wer­den wir unsere Kom­mu­ni­ka­ti­ons­pro­zesse unter die Lupe neh­men und ver­bes­sern, damit Billomat-Nutzer für die Zukunft bes­ser und trans­pa­ren­ter infor­miert sind. Beson­ders, wenn etwas mal nicht nach Plan läuft.

Wir möch­ten uns noch ein­mal in aller Form sowohl für die Unan­nehm­lich­kei­ten durch die Performance-Einbußen als auch die man­gel­hafte Kom­mu­ni­ka­tion ent­schul­di­gen. Unser obers­tes Ziel war und ist, mit Bil­lo­mat einen schnel­len und ein­fa­chen Dienst zur Ver­fü­gung zu stel­len, auf den man sich ver­las­sen kann. Wir hof­fen, mit die­ser aus­führ­li­chen Erklä­rung einen wei­te­ren Schritt in diese Rich­tung gemacht zu haben.

Tipp: In Zukunft wer­den wir noch stär­ker und schnel­ler über unse­ren Twitter-Account @billomat über aktu­elle, wich­tige und inter­es­sante Neuigkeiten informieren.

Hinterlasse eine Antwort