- PagerDuty /
- Der Blog /
- Zuverlässigkeit /
- Post-Mortem-Ausfall – 23. Januar 2014
Der Blog
Post-Mortem-Ausfall – 23. Januar 2014
Bei PagerDuty verlassen sich unsere Kunden darauf, dass wir hochverfügbar und zuverlässig sind, wenn ihre Infrastruktur dies nicht ist. Leider können in unserer Software manchmal Fehler auftreten. Wenn solche Vorfälle auftreten, stellen wir sicher, dass wir unseren Kunden, die möglicherweise negativ betroffen sind, Transparenz bieten. Wir entschuldigen uns für etwaige Serviceausfälle und setzen uns dafür ein, dass sich solche Probleme in Zukunft nicht wiederholen.
Kurz zusammengefasst
In den frühen Morgenstunden des Donnerstags, 23. Januar 2014, kam es zu einem Ausfall im Zusammenhang mit einer neuen Funktion, die zur Unterstützung unserer mobilen Apps veröffentlicht wurde. Der Grund dafür war eine bestimmte Art langsamer Datenbankabfrage, deren Auswirkungen durch eine Serverkonfiguration noch verstärkt wurden, die dazu führte, dass jede der langsamen Abfragen mehrfach wiederholt wurde.
Auswirkungen des Vorfalls
Die langsamen Abfragen führten zu einer hohen Belastung eines unserer Datenbankserver, was dazu führte, dass einige Benutzer ihre Benachrichtigungen verzögert erhielten und einige eingehende Ereignisse verloren gingen. Dies geschah über einen Zeitraum von 18 Minuten zwischen 1:02 Uhr und 1:20 Uhr.
Unsere Reaktion
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 von Apps im iOS AppStore weniger zügig ist, haben wir auch die Backend-Funktionalität entfernt, die wir am Vortag eingeführt hatten. Seit dem 23. haben wir den fehlerhaften Code überarbeitet und die daraus resultierende neue Abfrage ist fast drei Größenordnungen schneller als die ursprüngliche. Außerdem haben wir einen Killer für langsame Abfragen aktiviert, der Abfragen mit schlechter Leistung proaktiv identifiziert und beendet.
Maßnahmen, die wir für die Zukunft ergreifen
Wir werden neue Prozesse zur Prüfung neuer und alter Datenbankabfragen einführen. Wir testen unseren Code im Allgemeinen ausführlich, können ihn aber noch weiter verbessern, indem wir Randfälle und verschiedene Parameterpermutationen abdecken. Die neuen Prozesse werden dazu beitragen, dies zu formalisieren, indem sie Abfragedesignüberprüfungen, strengere Leistungstests und regelmäßige Analysen langsamer Abfragen einführen.
Wir werden auch unsere Serverkonfigurationen überprüfen, um sicherzustellen, dass alle Abfragen mit langer Laufzeit automatisch gestoppt werden und nicht ständig auf verschiedenen Servern wiederholt werden.
Schließlich werden wir die Überwachung verstärken, um diese Art von Problemen früher zu erkennen, und wir werden unsere Backend-Infrastruktur weiter umgestalten und modularisieren, damit Leistungsprobleme in einem einzelnen System nicht andere Systeme beeinträchtigen.