Zum Hauptinhalt Zur Navigation Zur Suche

Moodle: 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.
/ Hanno Böck
59 Kommentare Auf Google folgen (öffnet im neuen Fenster)
Der richtige Index sorgte dafür, dass die Datenbankabfragen beim Lernraum Berlin nicht mehr zu Serverüberlastungen führen. (Bild: Marie-Lan Nguyen, Wikimedia Commons)
Der richtige Index sorgte dafür, dass die Datenbankabfragen beim Lernraum Berlin nicht mehr zu Serverüberlastungen führen. Bild: Marie-Lan Nguyen, Wikimedia Commons / CC-BY 2.5

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(öffnet im neuen Fenster), 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.

"Der Zugang zum Lernraum wurde außerdem durch eine DDOS Protection abgesichert und hat seitdem unzählige, teils auch heftige DDOS-Attacken überstanden", erklärte Andreas Steinhäuser von Infra.run Golem.de. "Seitdem läuft das System weitgehend stabil und konnte wieder in den Regelbetrieb übernommen werden."

Eine Moodle-Installation für viele Schulen

Eine Besonderheit beim Lernraum Berlin ist, dass sehr viele Nutzer eine einzelne Instanz verwenden. Es gibt nur wenige Moodle-Installation, die jeweils von sehr vielen Schulen gemeinsam genutzt werden. Anderswo ist es häufig üblich, eine Instanz pro Schule zu verwenden.

Das Ergebnis: Die Berliner Datenbank enthielt extrem viele Einträge. Das dürfte einer der Gründe sein, warum das Problem zuvor nicht aufgefallen war. Bei kleineren Datenmengen sind die Anfragen selbst ohne Indizes schnell genug. Perspektivisch soll überlegt werden, die Architektur des Berliner Lernraums zu überarbeiten, um von den großen Instanzen wegzukommen.

Die Verbesserungen wurden inzwischen öffentlich gemacht, die Patches sind in einem öffentlichen Git-Repository von Infra.run einsehbar(öffnet im neuen Fenster). Sie sind allerdings bislang nur für MySQL oder MariaDB ausgelegt, nicht für andere von Moodle unterstützte Datenbanken wie PostgreSQL.

Der Patch für Moodle sorgte auch in anderen Bundesländern dafür, Lastprobleme bei der Software zu vermeiden. So berichtet BelWü, der Betreiber der Moodle-Instanzen in Baden-Württemberg, dass dort mit Hilfe des Patches aus Berlin(öffnet im neuen Fenster) ebenfalls die Performance verbessert worden sei.


Relevante Themen