Mayday - Moodle schleichend langsam

Hallo, liebe Linuxmuster-Nette,

ich stehe etwas unter Stress, weil unser seit Coronabeginn super laufendes Moodle extrem schwächelt. Ich muss dazu gleich bemerken, dass vermutlich Probleme bei STRATO die Hauptursache sein könnten, aber ich bräuchte dennoch Euren Rat:

  1. Mein Moodle ist bei STRATO auf einem starken VServer gehostet (16 vcores, 1Tb Platte, Virtuoso-Filesystem). Angeblich werden diese zur Zeit „gewartet“, was für unsere Schule mit 820 usern, die SEHR FLEIßIG mit Moodle arbeiten und alles über Moodle regeln, fatal ist.
    Zuerst fiel der Server am 11.5. von 20 Uhr abends bis 6 Uhr morgens aus (ohne Vorwarnung), jetzt, wieder am Montag, von ca. 20:30 bis 7:30.
    "Ausfallen" heißt: Zuerst wurden die Seitenaufrufe mit Verzögerung beantwortet (12-40 Sekunden), dann erschienen die Seiten nicht mehr, in einem Fall wurde sogar die Seite eines anderen virtuellen Hosts ausgeliefert (!), dann Funkstille über https://, nicht aber über ssh - hier konnte man sich zeitweise mit vielen Verbindungsabbrüchen einloggen, dann funktionierte ssh auch nicht mehr.
    Oder: Das Einloggen ging relativ schnell, ein apt-get update auf dem Server aber dauerte 2,5 min. für wenige Hundert Kilobyte.

Die Hotline sprach von Problemen und Optimierungen, wir fanden dann im Gespräch einen oder zwei Knoten, die bislang bei Traceroute die berühmten Sternchen zeigten, einen mit der IP 85.214.0.119. Das sei wohl das Problem.

Stand heute: Es arbeiten 36 Leute mehr schlecht als recht und vielen Verzögerungen am Moodle, teilweise erreichen unsere SuS die Plattform nicht, ich hingegen schon ! (Wie kommt das ? MÜSSEN die über den Knoten (s.o.), andere hingegen nicht ?)

Nun habe ich alle Logfiles durchwühlt: In den Serverlogs meines Moodles gibt es keine Auffälligkeiten, keine bei postfix, apache, syslog, auth.log. ABER: Ein „top“ ergibt die merkwürdige Ausgabe von sehr vielen rpciod-Prozessen, OBWOHL ICH KEIN NFS brauche (das Modul ist natürlich Teil des Kernels). Sollte ich das Modul rausschmeißen oder brauchen virtuelle Server sowas ? (ein „mount“ zeigt kein „type nfs“).
UND: Ich habe einen ungewöhnlich hohen Wert bei der CPU-Zeile:
%Cpu(s): 1,9 us, 0,3 sy, 0,0 ni, 95,2 id, 2,6 wa, 0,0 hi
Der wa-Wert (für die Hardware-Performance) ist bei mir bis zu 18 - das ist zu viel, oder ? Und es zeigt doch, dass auf das virtuelle Dateisystem viel zu langsam zugegriffen wird, oder ?

Ferner: Ich habe noch einen Root-Server bei Strato. Könnte ich nicht dort über einen Reverse-Proxy oder über die iptables meinen Moodle-Datenverkehr umleiten, indem ich die Schüler auf den zweiten Server verweise und von dort aus den ersten ansteuere ? Die kaputte node wird schon nicht dazwischenliegen ?

Und: Welche Performance-Probleme könnte ich noch selbst verursacht haben und welche Monitoring-tools könnten mir hier weiterhelfen ?

Fragen über Fragen…
Auf Eure Antworten bin ich gespannt !
Liebe Grüße
Christoph Gü

Hallo Christoph.
Wir sind nicht bei Strato sondern bei HostEurope. Auch da haben die vielen gleichzeitigen Zugriffe den Webserver schon mehrfach in die Knie gezwungen. Auch die Nutzung der App haut dabei scheinbar ordentlich rein?!

Ich weiß nicht, welche Virtualisierung Strato einsetzt – bei HE sollte ich laut Support nach dieser Ausgabe schauen (Virtuozzo – daher kein default-Befehl!!):
cat /proc/user_beancounters
vor allem die Spalte ganz rechts failcnt war dabei entscheidend: Im besten Fall muss da natürlich überall 0 stehen.

Ansonsten ist es hier jetzt so: Der Webserver wurde seit Beginn der Krise nun mehrfach auf die nächst höhere Ausbaustufe angehoben. Jetzt haben wir:
6 Cores, 16 GB RAM, Platte auf SSD. Damit läuft es größtenteils zuverlässig, doch bei über 1000 gleichzeitigen Zugriffen wird’s schon mal langsam.

Was das Monitoring angeht, ist evtl auch noch dieser Befehl interessant, der dir die Anzahl der derzeitigen Zugriffe auf Port 443 zeigt:
ss -ant | grep :443 | wc -l

Ach ja – das hier fand ich auch noch sehr hilfreich, da es anzeigt, wie viele Zugriffe z.B. über die App kamen.
awk {'print $7'} /var/www/...../access_log | sort -n | uniq -c | sort -n

hth – schöne Grüße,
Michael

1 Like

Hallo Liste, :slight_smile:

für 1000 User „nur“ 16GB RAM, üppig ist etwas Anderes :wink:

Eine Stellschraube ist auch wieiviel RAM ich Moodle zuweise: Administration/Server/Performance. Welchen Eintrag habt ihr?

Andere Stellschraube: Wieviel RAM wird php zugewiesen:

Administration/Server/PHPInfo:

Welche Werte habt ihr bei memory_limit?

VK Andre

Hi.
Den vServer gibt’s leider nicht mit mehr als 16 GB – zumindest nicht so, wie wir ihn zZ angemietet haben.

Da meinst du sicher Performance Eigene PHP-Memory-Begrenzung extramemorylimit oder?
Ich habe da 4096 M (default 512 M).

php: 128 M (memory_limit)
Das könnte ich alles auch noch hochdrehen …
Schönen Gruß,
Michael

Hallo Michael,

docs.moodle.org: „memory_limit sollte mindestens 96M sein (wobei manche Funktionen nicht funktionieren werden wenn die Einstellung auf diesem niedrigen Wert gesetzt ist). Mit einem niedrigeren Wert kann Moodle nicht installiert werden. 128M ist empfohlen, große Systeme können sogar einen noch größeren Wert erfordern.“

Die Angaben bei Moodle sind schon recht „schmal“ angesetzt.

Eine gute Doku: Geschwindigkeitsempfehlungen für Moodle.

Kannte den Artikel auch noch nicht …

Bei mir sind es 6GB !! und alles läuft. Moodle braucht richtig Speicher. Bei Updates/Upgrades setze ich das temporär noch höher, seitdem habe ich kein Fehler 500 , Timeout o.ä. während der Installation. Und dauert gefühlt max. 2 Minuten.

Wie administrierst Du dein php? Hast Du ein Frontend, Plesk, Froxlor und wie sie alles heisen? Ansonsten musst du es in deiner php.ini bzw. .htaccess ändern.

Meine Empfehlung 2GB, dann müsste eine deutliche Verbesserung erkennbar sein.

Wieviele Moodle’s habt ihr auf der Maschine?

Viel Spass mit der Lektüre :wink:

VG Andre

1 Like

Hallo zusammen,

Moodle gibt selbst einige Tipps, wie man die Performanz verbessern kann.
Ein guter Startpunkt ist hier:
https://docs.moodle.org/38/de/Geschwindigkeitsempfehlungen

Auch das hier fand ich eben beim Suchen - vielleicht hilft es:
https://www.cloudways.com/blog/boosting-moodle-performance-tips-to-speed-up-your-moodle-install/

Ich bin die Infos bei Moodle irgendwann mal durchgegangen, inkl. Redis,
Solr, … Inzwischen haben wir eigentlich keine spürbaren
Beeinträchtigungen mehr (und es ist wirklich was los bei uns auf dem
Server). Und das bei einem KVM-virtualisierten Ubuntu mit „nur“ 4
Kernen, 16GB RAM und glücklicherweise unserem neuen 500 MBit DSL.

Auf dem gleichen Server laufen auch alle anderen Webdienste
(Nextcloud/Collabora) - daher würde ich sagen, dass solche krassen
Hänger eigentlich nicht normal sein dürften und kaum durch die reine
„Hardwareausstattung“ erklärt (bzw. gelöst) werden können.

Viele Grüße
Thomas

1 Like

Bei VMs kann es auch immer daran liegen, dass eine andere VM zuviele Ressourcen vom Blech schluckt, wir hatten das Problem schon mehrfach. Ich hab dann immer im Ticketsystem so lange gemeckert bis die VM auf ein weniger belastetes Blech umgezogen wurde.

In Zukunft werde ich wohl eher Rootserver aus der Hetznerboerse fuer um de 30€/Monat anmieten und dafuer auf zwei VMs verzichten, denke das „performt“ besser.

Das kenne ich von meinem Hoster eher nicht, Proleme kreise ich erstmal ein und wenn ich ausschliesse, dass es von meiner Seite kommt, dann hat das der Hoster zu loesen, sonst bin ich weg und er weiss das auch.

Gruss Harry

Hallo Irrlicht, hallo Liste,

bin seit 10 Jahren mit einem root-Server bei Hetzner.

Preislich sind sie kaum zu schlagen und die Technik hat immer funktioniert.

Auf der „Server-Börse“ kann man immer mal wieder einen guten Fang machen, aber halt zu dem Preis von Null-Support.

Leider gibt es auch für root-Server keinen technischen Support, weder für das Betriebssystem noch deren Anwendungen.

Bei Routing oder DNS-Schwierigkeiten, Domainen-Umzug etc. wird einem super geholfen.

Daher habe ich mir vor einigen Monaten bei keyweb.de einen root-Server gemietet, mit dem Hintergrund des techn. Supports auch auf Betriebsebene.

Das hat natürlich schon seinen Preis [ca. 100€/Monat], aber diese ganzen billigen VM’s und Shared-Server taugen a. m. Sicht nicht wirklich für den produktiven Einsatz.

Was auch ein Kriterium war, ist deren (freie) Software „KeyHelp“ mit dem sich der Server gut verwalten lässt. Like Plesk, Froxlor etc.

Nachteile bei der KeyWeb: Derzeit wird nur Apache, aber kein Nginx unterstützt, aber die Software wird aktiv weiter entwickelt und supportet.

Es gibt eine gute Community dort und ein gutes Board.

Für Froxlor gibt es auch eine Community, aber auch kommerziellen Support per Ticketsystem.

Mein Beitrag ist keine versteckte Werbung für den/die Anbieter, nur meine persönliche Meinung/Erfahrung.

Allen Vätern einen schönen Vatertag :slight_smile:

VG Andre

Wir haben auch zwei VMs bei Keyweb, bisher immer alle Probleme geloest bekommen, allerdings haengen die noch auf symmetrischen 100MBit/s. Ich bin gerade in Verhandlung, wie man das zum gleichen Preis auf Gigabit symmetrisch bringen kann, sonst werde ich ueber kurz oder lang zu Hetzner wechseln.
Preisvergleich z.B. zum Keyweb-Rootserver:
https://www.keyweb.de/de/hosting/server/dedicated/keymachine-server

Die guenstiges Rootservervariante mit Intel® Core™ i5 4570 Haswell kostet 59€/Monat
hat weniger „Wumms“, nur 100MBit/s und weniger RAM wie die 32€/Monat-Variante aus der Hetznerboerse und Keyweb nimmt auch noch 99€ fuer die Einrichtung.

Support brauche ich nicht solange die Hardware funktioniert und nahezu alle Probleme kamen von ueberlasteten Hypervisoren (Ueberprovisionierung), das faellt ja alles bei Rootservern weg.

Gruss Harry

Hallo Harry,

danke für deine Infos, sehr aufschlussreich bzgl. der Netzwerkanbindung.

Gut, Support hat seinen Preis.

Was mir bei KeyWeb nicht so gefällt, dass selbst die root-Server (bedingt durch die Admin-Software) motifiziert sind und es schon eine bestimmte Umgewöhnung bedarf.

Bei Hetzner gefällt mir deren Mirrors und das sie ein eigenes DNS-Server-System dem Kunden zur Verfügung stellen und so auch einiges an Schmutz/Bedrohung abfangen.

Auf dem KeyWeb-Server wird irgend ein grosser DNS-Resolver eingetragen, Standard ist m.W. Google, was nicht bei Allen Freude auslöst. Aber lässt sich ja ändern.

Ich freue mich sehr diese Liste „entdeckt“ zu haben, interessante Themen, freundlicher Umgang, technisches Niveau.

Wollte ich noch loswerden :wink:

VG Andre

Ich hab auf den beiden Keyweb-VMs einen eigenen Bind laufen und da in Master-/Slavekonfiguration, ich verwalte meinen Namensraum also selbst und wenn ich bei Hetzner einen Rootserver miete, dann trage ich den da einfach mit ein, ist ja egal, welche IP der hat, Namen sind Schall und Rauch.
Ich nutze auch kein Plesk oder was auch immer da sonst noch angeboten wird.

Ich lasse mir keinen Schmutz und keine Bedrohung abfangen, was soll das?
Ich brauch auch keinen Firewall, da ich nur die Ports oeffne, die sowieso raus muessen und der Postfix arbeitet mit den Blocklisten, die ich ihm vorgebe.

Gruss Harry

Hallo,

vielen Dank erstmal für Eure Antworten.
Aber der Krimi geht weiter.

Gestern Morgen lief Moodle so lala, mit Werten bei top:
%Cpu(s): 1,9 us, 0,3 sy, 0,0 ni, 95,2 id, 1- 4 (etwa) wa, 0,0 hi

Dann kamen einige Dinge, die sehr merkwürdig sind.
Zunächst rief mich ein einzelner Schüler an, er komme nicht ins Moodle. Account nachgeprüft - ich komme rein. Mein Moodle flutscht. Bei ihm - timeout !

"Ok ", denke ich, „das Routing ist bei ihm ein anderes“.

Dann meldeten etliche user ein Erlahmen. Einzige Möglichkeit, die ich eben erst erkannt habe: Strato macht ein tägliches backup - und hat doch tatsächlich EIGENMÄCHTIG das Zeitfenster umgestellt: Statt nachts war es nun am hellen Nachmittag.

Es wird noch interessanter: Ich setze Werte hoch:
a) Php.ini: memory_limit 4096M
b) Bei Moodle selbst: Server -> Performance -> Eigene PHP-Memory-Begrenzung : 4096M

Schließlich hab ich 32GB ! (aber eben als Vserver !)

Die Auswirkungen waren dramatisch: Jetzt ging fast NICHTS mehr. Fast keiner der User konnte mehr anständig arbeiten. Ich habe jetzt die Werte umgestellt: a) 256M, b) 512M - und so funktioniert alles am besten. Fragt mich nicht, weshalb !

Nun habe ich gestern Abend Moodle in den Wartungsmodus geschaltet, dann zuerst mal ausprobiert, wie der Admin (der ja weiter auf die Website kommt und sie auch aktiv bedienen kann) bedient wird: EXTREME Performance-Schwäche aller Seiten !
Auch „stuckerten“ alle ssh-Befehle, und zwar immer nach dem Muster: Warten - etliche Daten liefern - Warten - etliche Daten liefern etc.
Dann schaltete ich nach und nach ALLE Dienste ab: MySQL, Apache, Postfix, Fail2ban - es wurde etwas besser, aber bis zum Schluss dauerte ein apt-get update auf dem Server beispielsweise 2-4 Minuten.
Reboots brachten nichts.
Das Löschen verwaister .quota-Files auch nichts !
Schließlich entdeckte ich in der Prozessliste zwei Merkwürdigkeiten: Zum einen eine Fülle von [rpciod]/17000… = Kundennummer (!). Es ist aber weder das Paket nfs-server-… noch der nfs-common… installiert und ein modprobe nfs brachte einen Error „FATAL Module nfs not found“. POTZBLITZ !
Zum Zweiten gab es neben dem Prozess „cron“ auch noch einen Prozess „CRON“ - vielleicht ein Hacker-Tool ? dachte ich, ich musste ihn zweimal „killen“, da er einmal neu „respawnte“. Danach lief der Server aber weiterhin extrem langsam.

Heute Morgen schleppt sich Moodle nun schneller dahin. Ich werde jetzt mal durchlesen, was Ihr in der Zwischenzeit geschrieben habt.

L.G.
Christoph Gü

Hallo Christoph.
Kommt ein Serverumzug für dich in Frage? Falls da Plesk installiert ist: damit habe ich sehr gute Erfahrungen, was den Umzug auf einen anderen Plesk-Server angeht. Das lief hier kürzlich absolut fehlerfrei - trotz Versionssprung über mehrere Versionen…
Schöne Grüße
Michael

Hallo, Michael,

ja, klar ! Ich habe kein Plesk, aber ich schaue mir gerade die Angebote von Hetzner an.
Frage in die Runde: 820 bis später mal 1000 Benutzer / Moodle - brauch ich da eine SSD bei 1Gbit Daueranbindung auf einem Root-Server mit 6-Kerner AMD Ryzen 5 ? (Das Einstiegsmodell bei Hetzner mit HD).

Gruß Christoph

Schau Dir ruhig erstmal die Kisten in der Boerse von Hetzner an, die sind guenstiger.

Wir haben Moodle auf Magnetscheiben, das tut einwandfrei, den Mailserver mit Webmailer auf SSD, da waren die Magnetscheiben schon spuerbar langsamer.

Schau Dir bei Deinem Problemkind mal an was da wo Last macht.
iotop zeigt Dir, wer da wie doof auf der Platte rumackert, iftop wer die Netzwerkkarte verstopft, mit nethogs, tcptrack und Konsorten gibt’s weitere Infos zu Netzwerkaktivitaeten und den dazugehoergen Prozessen.

Wenn Du da einen Bot draufhast, der z.B. Mails rausballert, dann schau in mail.log oder syslog (tail -f /var/log/mail.log), wenn Du glaubst Dein in PHP geschriebenes CMS wurde gehackt, dann kannst Du mal mit einem grep -ri base64_decode /var/www/* schauen, ob da Code per base64-Shit versteckt wurde, da gibt es aber auch false positives, die da legitim drin sind.

Trojaner findet man alle (!) durch Beobachtung von Netzwerkaktivitaeten und Logdateien, zur Not muss man da mit tcpdump dran und das dann in aller Ruhe per Wireshark auswerten, UDP-Traffic nicht vergessen.

Deine ganzen Optimierungen sind aus meiner Sicht fuer’n Arsch, wenn da noch genugend RAM frei ist, bei htop nicht alle Cores dicht, dann passt das.
Problemtisch sind hohe "wa"s, dann ist da meistens das Plattensubsystem drunter dicht, das kann von anderen Gaesten kommen oder der Hypervisor rebuildet gerade ein Array, das muss aber Strato wissen, das entzieht sich Deinem Einfluss.
Gruss Harry

1 Like

Ok, Harry, das klingt spannend. Ich bin bereits dabei, Deine Tipps umzusetzen.

Weiß den jemand von Euch, wo Moodle seine Gesamtbackups speichert ? (Die .mbz-Dateien) ?

gruß Christoph

Aus der Moodledoku, dort werden die Pfade eingestellt:

## Standardeinstellungen für die Kurssicherung

Als Administrator/in können Sie die Voreinstellungen für die Kurssicherung auf der Seite *Website-Administration* (oder im Block *[Einstellungen](https://docs.moodle.org/38/de/Einstellungen-Block) > Website-Administration* ) *> Kurse > Sicherung > Allgemeines* vornehmen. Auf dieser Seite können Sie detailliert festlegen, welche Daten standardmäßig in die Kurssicherung einbezogen werden sollen: Nutzer, Rollenzuweisungen, Aktivitäten, Blöcke, Filter, Kommentare, Fortschrittsinformationen, Logdaten, Verlauf.

Alternative: Befehl find , ist allerdings kreuzlahm und es gibt keinen Menschen auf der Welt, der auf Anhieb die richtigen Parameter in der richtigen Reihenfolge eingeben kann.

Alternative dafuer: Paket locate installieren, Befehl updatedb eingeben, damit ein Festplattenindex erstellt wird und dann per locate *.mbx die Dateien auf der Platte suchen.

Gruss Harry

Ja, da steht leider nix („Standard: leer“ = automatische Pfadfestlegung, hm, aber wo ist das …)
find und seinen erfolgreichen Bruder, locate, kenne ich beide - ich dachte aber, jemand von Euch ist schneller als die … noch suche ich !

Gruß Christoph

Schneller als locate geht eigentlich nicht.
Du willst Dir aber nicht alle Arbeit abnehmen lassen, oder? :slight_smile:

Ganz meiner Meinung < 2 Sek. :wink: