Was den Lernraum Berlin in die Knie zwang
"Eine übermäßig große Datenbank und schlecht optimierte Abfragen in Moodle führten zu Ausfällen in der Online-Lernsoftware.
Es war für Berlin ein schlechter Start in den Schul-Lockdown im neuen Jahr. Als am 4. Januar die Weihnachtsferien endeten, war der Lernraum Berlin vielfach nicht erreichbar. Wie Golem.de jetzt erfahren hat, war der Grund dafür primär eine einzelne Datenbanktabelle in der Software Moodle. Inzwischen läuft der Lernraum dank einer kleinen Änderung stabil - und die Verbesserungen könnten bald allen Moodle-Nutzern zugute kommen.
Der Lernraum Berlin wird von zahlreichen Schulen in der Landeshauptstadt genutzt und verwendet die Software Moodle. Dabei handelt es sich um eine PHP-Applikation, die als Open-Source-Software entwickelt wird.
Überlastung trotz zusätzlicher Serverkapazitäten
Obwohl laut Medienberichten zusätzliche Serverkapazität angeschafft wurde, um den erwarteten Ansturm zu bewältigen, liefen am ersten Schultag die Server heiß und kamen mit der Last nicht zurecht. Daraufhin wurden Mitarbeiter der Firma Infra.run hinzugerufen, um die Probleme zu analysieren. Infra.run betreibt bereits die Big-Blue-Button-Server für Berliner Schulen und arbeitet eng mit dem Verein Cyber4edu zusammen, über den wir vor einiger Zeit berichtet haben.
Bei der Analyse stellte sich heraus, dass die Last fast ausschließlich durch häufige Datenbankabfragen auf eine einzelne Tabelle verursacht wurde. Die Tabelle enthält Daten über Termine von Kursen. Alleine wenn man das Dashboard von Moodle aufruft, das direkt nach dem Login angezeigt wird, erfolgen vier Abfragen von Daten aus dieser Tabelle.
Wenn man in einer großen Tabelle Daten sucht, kann dies dauern, insbesondere wenn die Daten komplett durchsucht werden müssen. Datenbanken verwenden daher üblicherweise sogenannte Indizes. Dabei handelt es sich um Strukturen, die es ermöglichen, nach bestimmten Kriterien besonders effizient zu suchen - vergleichbar etwa mit einem Stichwortindex in einem Buch.
Der passende Index fehlte
Wie sich herausstellte, hatte die Datenbank nicht die richtigen Indizes, um die häufig stattfindenden Anfragen effizient abzuarbeiten. Ein Patch der Mitarbeiter von Infra.run holte dies nach und sorgte dafür, dass die entsprechenden Indizes bei den Datenbankabfragen auch verwendet wurden..."