Ein externes Überwachungstool meldet Ihnen, dass sich die durchschnittliche Antwortzeit der 5 überwachten URLs in den letzten 30 Minuten verdoppelt hat. Das Projekt läuft auf einem einzelnen physischen Server, der nicht von Ihnen verwaltet wird und sich irgendwo in einem Rechenzentrum befindet. Sie verbinden sich über SSH, starten htop und sehen, dass die CPU-Last 95% beträgt und der Speicher längst überläuft.
Laut git wissen Sie, dass sie vor etwa einer Woche eine Datenbankmigration auf eine neue Tabellenstruktur durchgeführt haben, und ein Kollege schreibt im Chat, dass er die Migration über Nacht durchführen musste, weil die Neuberechnung der Spalten und Indizes etwa 5 Stunden dauerte, während derer fast die gesamte Datenbank gesperrt war und weder INSERT noch SELECT funktionierten.
Die Leistungsprobleme sind also wahrscheinlich auf unsachgemäß gestaltete Indizes, schlecht umgestaltete SQL-Abfragen oder ein großes Verbindungspooling zurückzuführen. Laut Google Analytics gibt es 7.000 Nutzer auf der Website, und ein Ausfall von 5 Stunden würde für den Kunden ein Reputationsrisiko und einen Verlust von Zehn- bis Hunderttausenden von Kronen in dieser Zeit bedeuten (es ist schwer zu schätzen, die Projektionisten machen genug aus). Sie erkennen, dass es nicht ausreicht, nur die Funktionalität in einer Testumgebung zu testen, sondern dass Sie auch einen Lasttest durchführen müssen.
Da es sich um einen wichtigen E-Commerce-Shop Ihres größten Kunden handelt und Sie davon ausgehen, dass sich die Situation verschlimmern könnte, haben Sie 30 Sekunden Zeit, eine Entscheidung zu treffen.
Wie gehen Sie vor?
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | de