Loading
Lade/Simuliere...
(Bitte das Browserfenster nicht schließen!)
x
⚠️

Die Startseite brauchte 25 Sekunden — und niemand hatte es mir gesagt

Tino H. Tino H.

Ein Spieler schrieb mir, die Startseite lade ewig. Ich habe nachgemessen und bin ziemlich blass geworden: fast 25 Sekunden, bis der Server überhaupt antwortete. Das war der Anfang von zwei Tagen unter der Haube — mit einem Fund, der deutlich unangenehmer war als die Ladezeit selbst.

⚡ 25 Sekunden für eine einzige Seite

  • Die Ursache war weder exotisch noch clever. Die Startseite berechnete bei jedem einzelnen Aufruf sämtliche ligaweiten Statistiken komplett neu — für jeden Besucher, jedes Mal aufs Neue.
  • Solange es wenige Spielstände gab, fiel das nicht auf. Mit jedem neuen Spielstand wurde die Rechnung größer. Am Ende reichte sie für eine halbe Minute Wartezeit.
  • Diese Werte werden jetzt einmal vorbereitet statt bei jedem Besuch neu ermittelt. Die Startseite antwortet seitdem in Bruchteilen einer Sekunde.

🔍 Warum es zwei Wochen niemand gemeldet hat

  • Das ist der Teil, der mich mehr beschäftigt als die Ladezeit: Der Zustand bestand vermutlich seit Wochen. Gemeldet hat ihn eine einzige Person.
  • Die meisten schließen den Tab und kommen nicht wieder. Fehlermeldungen bekomme ich, Langsamkeit meldet fast niemand.
  • Deshalb gibt es jetzt eine automatische Überwachung: Das Spiel misst selbst, wie lange jede Seite braucht, und meldet mir Ausreißer — ohne dass jemand ein Ticket schreiben muss.

🧹 Sechs Millionen Zeilen, die es nicht geben dürfte

  • Beim Aufräumen der Datenbank stieß ich auf über sechs Millionen Zeilen, die zu Spielständen gehörten, die es längst nicht mehr gibt.
  • Der Grund war ein Fehler von mir, und zwar kein kleiner: Die Funktion „Spielstand löschen“ räumte 19 von 28 Tabellen ab. Nicht dabei war ausgerechnet die größte — die Einzelspieler-Statistiken pro Match.
  • Jeder gelöschte Spielstand ließ seine komplette Match-Historie zurück. Und weil danach der Spielstand fehlte, fand auch die nächtliche Aufräum-Routine diese Reste nie wieder.

🗄️ Was jetzt anders ist

  • Die Löschfunktion liest die Tabellenliste inzwischen selbst aus der Datenbank, statt einer Liste zu folgen, die ich pflegen muss. Sie kann damit nicht mehr veralten.
  • Zusätzlich räumt die nächtliche Routine jetzt auch Altlasten ab — Reste, für die es keinen Spielstand mehr gibt.
  • Die größte Tabelle schrumpfte von rund 20 auf gut 9 Millionen Zeilen, etwa 1,8 GB gingen an den Server zurück.
  • Für dich merkbar ist das vor allem indirekt: Eine kleinere Datenbank ist eine schnellere Datenbank.

Zwei Tage Arbeit ohne ein einziges neues Feature — und trotzdem die sinnvollste Zeit seit Langem. Falls dir eine Seite zäh vorkommt: Schreib mir das ruhig. Ich sehe inzwischen zwar vieles selbst, aber längst nicht alles.

« Blog

NFL Shop