- PagerDuty /
- Blog /
- Nicht kategorisiert /
- Ausfallanalyse – 23. Januar 2014
Blog
Ausfallanalyse – 23. Januar 2014
Bei PagerDuty verlassen sich unsere Kunden auf unsere hohe Verfügbarkeit und Zuverlässigkeit, insbesondere wenn ihre eigene Infrastruktur nicht ausreicht. Leider können in unserer Software gelegentlich Fehler auftreten. In solchen Fällen sorgen wir für Transparenz gegenüber unseren betroffenen Kunden. Wir entschuldigen uns für jegliche Serviceunterbrechungen und setzen alles daran, solche Probleme künftig zu vermeiden.
TL;DR
In den frühen Morgenstunden des Donnerstags, den 23. Januar 2014, kam es zu einer Störung im Zusammenhang mit einer neuen Funktion unserer mobilen Apps. Ursache war eine bestimmte Art langsamer Datenbankabfrage, deren Auswirkungen durch eine Serverkonfiguration verstärkt wurden, die dazu führte, dass jede dieser Abfragen mehrfach wiederholt wurde.
Auswirkungen des Vorfalls
Die langsamen Abfragen führten zu einer hohen Auslastung eines unserer Datenbankserver, wodurch einige Benutzer verzögert Benachrichtigungen erhielten und eingehende Ereignisse verloren gingen. Dies geschah in einem 18-minütigen Zeitfenster zwischen 1:02 Uhr und 1:20 Uhr.
Wie wir reagiert haben
Wir konnten die langsamen Abfragen, die das Problem verursachten, schnell identifizieren und haben sie manuell beendet. Anschließend haben wir die Version der mobilen App im Google Play Store für Android-Kunden zurückgesetzt. Da der Veröffentlichungsprozess im iOS App Store weniger schnell ist, haben wir auch die am Vortag eingeführte Backend-Funktionalität entfernt. Seit dem 23. haben wir den fehlerhaften Code überarbeitet, und die resultierende neue Abfrage ist fast drei Größenordnungen schneller als die ursprüngliche. Wir haben außerdem einen Mechanismus zur Erkennung langsamer Abfragen aktiviert, der ineffiziente Abfragen proaktiv identifiziert und beendet.
Maßnahmen, die wir künftig ergreifen
Wir werden neue Prozesse für die Prüfung von Datenbankabfragen einführen, sowohl für neue als auch für bestehende. Wir testen unseren Code zwar generell umfassend, können aber die Abdeckung von Sonderfällen und verschiedenen Parameterkombinationen noch verbessern. Die neuen Prozesse werden dies formalisieren, indem sie die Überprüfung des Abfragedesigns, strengere Leistungstests und regelmäßige Analysen langsamer Abfragen einführen.
Wir werden außerdem unsere Serverkonfigurationen überprüfen, um sicherzustellen, dass langlaufende Abfragen automatisch gestoppt werden und nicht ständig auf verschiedenen Servern wiederholt werden.
Schließlich werden wir die Überwachung verstärken, um solche Probleme frühzeitig zu erkennen, und unsere Backend-Infrastruktur weiter refaktorisieren und modularisieren, damit Leistungsprobleme in einem einzelnen System keine Auswirkungen auf andere Systeme haben.