Wo sollte ich mit dem Debuggen einer CPU-Spitze und eines Timeouts beim Anmelden bei einer Moodle-Site beginnen?

Wo sollte ich mit dem Debuggen einer CPU-Spitze und eines Timeouts beim Anmelden bei einer Moodle-Site beginnen?

entschuldigen Sie, dass diese Frage aus Anfängersicht ist. Ich bin zwar Webentwickler, habe jedoch nicht viel Erfahrung mit der Wartung von Servern oder dem Debuggen und Beheben von Leistungsproblemen.

Ich habe eine Moodle-Site (Moodle 2.2.3), die auf einem Apache-Server (LAMP-Stack) läuft, der eine MySQL-Datenbank verwendet.

In letzter Zeit wurde bei bestimmten Benutzern beim Anmelden ein Timeout gemeldet - nach einer bestimmten Zeit wird ihnen einfach eine leere Seite angezeigt. Einige Benutzer können sich problemlos anmelden. Dies scheint davon abzuhängen, für welche Kurse der Benutzer angemeldet ist. Ein Administratorbenutzer ohne Kurse kann sich beispielsweise problemlos anmelden.

Ich konnte den Timeout-Wert in php.ini von 60 Sekunden auf 120 Sekunden erhöhen und das gleiche Verhalten beobachten. Mit $top kann ich sehen, dass die von www-data genutzte CPU bis zum Timeout auf etwa 99 % ansteigt.

Ich gehe davon aus, dass ein langer Aufruf der Datenbank oder ähnliches erfolgt.

Wie kann ich von MySQL protokollierte Fehlermeldungen sehen? Wie kann ich von PHP protokollierte Fehlermeldungen sehen? Das in meiner php.ini definierte Standard-Error_log (/var/log/php.log) scheint dort nicht vorhanden zu sein? Wie kann ich PHP dazu bringen, Fehler in dieser Datei zu protokollieren, damit ich sehen kann, was passiert?

Moodle protokolliert Fehler auch in logs/error.log, aber das bringt keine Klarheit.

Alle guten Vorschläge sind willkommen – danke!

Antwort1

Wir haben an meinem früheren Arbeitsplatz viele Moodle-Leistungsoptimierungen durchgeführt und dabei PHP Xdebug-Profiling verwendet. Durch Aktivieren des Profilings wird eine *.cachegrind-Datei erstellt, die dann von vielen Lesern gelesen werden kann – ich verwende QCacheGrind unter Windows oder KCacheGrind unter Linux. Sie sollten dann in der Lage sein, die Funktion zu lokalisieren, die so lange braucht.

Aus dem Speicher geht hervor, dass es wahrscheinlich an der Menge der Kursdaten liegt, die beim Anmelden des Benutzers geladen werden. Wenn zu viele Daten vorhanden sind und alle Daten vom SQL-Server abgerufen werden und nicht nur die erforderlichen, kann dies die Leistung erheblich verlangsamen. Dies kann auch anhand des langsamen Protokolls ermittelt werden, wie in einem Kommentar oben erwähnt, vorausgesetzt, dass die SQL-Abfrage das Leistungsproblem verursacht.

Ich würde Ihnen außerdem auf jeden Fall empfehlen, Ihre Moodle-Instanz auf eine neuere Version zu aktualisieren, da ich weiß, dass seit Moodle 2.2.3 viele Leistungsverbesserungen in das Upstream-Repository übertragen wurden. Als offizieller Moodle-Partner haben wir diese an Moodle übertragen.

verwandte Informationen