Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man die Leistung von Moodle bewertet

Moodle, das weltweit beliebteste Lernmanagementsystem (LMS), wird häufig in einer schnell wachsenden und groß angelegten Umgebung eingesetzt. Glücklicherweise wurde Moodle mit Blick auf Verfügbarkeit und Skalierbarkeit entwickelt, mit vielen Tools, die uns bei der Verwaltung einer großen Infrastruktur helfen. Moodle-Infrastrukturen in großem Maßstab können auf verschiedenen Arten von Maschinen eingerichtet werden, von Bare-Metal- bis hin zu unterteilten virtuellen Containern (oder Kubernetes-Pods) und umfassen üblicherweise eine mehrschichtige Architektur für separate Load Balancer, Webserver, Cache-Server, zentralisierte/geclusterte Speicherserver und Datenbankserver.

In diesem Blogbeitrag zeigen wir Ihnen, wie Sie einen Benchmark Ihrer Moodle-Site durchführen, der es uns ermöglicht, zu verstehen, wie unsere Moodle-Site in einem bestimmten Zeitraum funktioniert. In einem Cluster-Setup kann die Leistung eines Moodle-Clusters durch verschiedene Faktoren wie Hardwareressourcen, Virtualisierungs-Overhead, Netzwerklatenzen zwischen Servern, Firewalls, Caching und vielem mehr beeinflusst werden, und die Durchführung von Benchmarks ist eine solide Möglichkeit, die Moodle-Leistung zu testen und abzuschätzen bevor es in die Produktion geht.

Berichts-Benchmarking-Plugin

Zunächst einmal ist es gut, ein Grundverständnis zu haben, wenn unser Setup im Leerlauf ist und auch unter einer Umgebung mit hoher Last. Es wird dringend empfohlen, das Report Benchmark-Plugin für Moodle zu installieren, das verschiedene Tests durchführt, um die Qualität der Moodle-Plattform mithilfe eines Bewertungssystems zu bestimmen. Dieser Score vergleicht Ihr System und Ihre Geschwindigkeit mit einigen Schwellenwerten (akzeptabel und kritisch), genau wie der folgende Screenshot:

Nachdem das Plugin installiert ist, gehen Sie zu Site-Administration -> Berichte -> Benchmark -> Benchmark starten den Benchmark durchzuführen. Die Benchmark-Tests sollten weniger als 1 Minute dauern und werden trotzdem nach 2 Minuten abgebrochen, was zeigt, ob es Bedenken auf Ihrer Plattform gibt. Je niedriger die Punktzahl, desto besser, und wenn alles grün ist, zeigt dies im Allgemeinen an, dass unsere Moodle-Site in gutem Zustand sein sollte. Grundsätzlich gibt es 5 Testgruppen:

  • Servergeschwindigkeit
  • Prozessorgeschwindigkeit
  • Festplattengeschwindigkeit
  • Datenbankgeschwindigkeit
  • Ladegeschwindigkeit der Seite

In den Fällen, in denen sich Moodle langsamer als erwartet verhält, würden Sie einige nicht grüne Kästchen im Benchmark-Bericht sehen, wie im folgenden Beispiel gezeigt:

Weiter unten im Bericht finden Sie die Zusammenfassung des Benchmarks. Im obigen Fall haben wir ein Apache Benchmark (ab)-Tool erstellt, um die Website mit 20 gleichzeitigen Benutzerverbindungen einem Stresstest zu unterziehen und gleichzeitig diesen Benchmark-Bericht auszuführen und die Moodle-Leistung zu beobachten. Die zusammenfassende Begründung, obwohl sie in Tuning-Aspekten ziemlich weit gefasst ist, könnte uns dabei helfen, den Bereich einzugrenzen, der verbessert werden muss, wie z. B. Datenbankoptimierung, Moodle-Cache und Hardwareressourcen.

Es wird empfohlen, diesen Benchmark-Test mehrmals durchzuführen, um einen aussagekräftigen Durchschnitt zu erhalten. Wenn die Performance Ihrer Installation nicht optimal ist, finden Sie einige Empfehlungen zur Verbesserung in der Moodle-Dokumentation. Führen Sie diesen Benchmark nicht während aktiver Stunden auf einer Produktionsplattform aus, da dies zu erheblichen Leistungseinbußen führen könnte.

Apache JMeter

Apache JMeter ist eine Java-Anwendung, die entwickelt wurde, um das funktionale Verhalten zu testen und die Leistung statischer und dynamischer Webanwendungen zu messen. Es kann verwendet werden, um eine starke Last auf einem Server, einer Gruppe von Servern, einem Netzwerk oder einem Objekt zu simulieren, um seine Stärke zu testen oder die Gesamtleistung unter verschiedenen Lasttypen zu analysieren.

Seit Moodle v2.5 und höher wird es mit einem JMeter-Testplangenerator geliefert, um den Prozess des Lasttests mit JMeter durch zwei integrierte Skripte zu vereinfachen - "Testkurs erstellen" und "JMeter-Testplan erstellen", die beide unter Site-Administration -> Entwicklung , ergänzt durch eine Reihe von Add-ons Moodle-Leistungsvergleich. Damit Sie diese Funktion über die Moodle-Weboberfläche nutzen können, müssen Sie Moodle unter Site-Administration -> Entwicklung -> Debugging -> Debug-Nachrichten -> ENTWICKLER:zusätzliche Moodle-Debug-Nachrichten für Entwickler . Verwenden Sie andernfalls die im Verzeichnis {Moodle}/admin/tool/generator/cli verfügbaren CLI-Tools.

Beachten Sie, dass der JMeter-Test nicht auf einem Produktionssystem durchgeführt werden sollte. Die Testplanskripte generieren Daten und belasten den Server absichtlich bis an seine Grenzen und darüber hinaus, wodurch er häufig überlastet wird und nicht mehr reagiert. Führen Sie sie nicht einmal auf einer separaten Moodle-Instanz auf dem Produktionsserver aus und verbinden Sie sich mit demselben Produktionsdatenbanksystem, da dies die Leistung direkt beeinflusst.

Bereitstellen des JMeter-Servers

Um die Anweisungen zu vereinfachen, führen wir alle unsere Befehle als Root-Benutzer aus. Installieren Sie auf dem JMeter-Server alle erforderlichen Pakete:

$ sudo apt install apache2 mysql-client mysql-server php libapache2-mod-php graphviz aspell ghostscript clamav php7.4-pspell php7.4-curl php7.4-gd php7.4-intl php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap php7.4-mbstring

Erstellen Sie einen privilegierten MySQL-Benutzer, der vom Moodle-Leistungsvergleichstool verwendet werden soll. Es ist nicht erforderlich, zuerst eine Datenbank zu erstellen:

$ mysql -uroot -p
mysql> CREATE USER 'moodleperformance'@'localhost' IDENTIFIED BY 'mys3cret';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'moodleperformance'@'localhost';
mysql> exit

Erstellen Sie das Dataroot- und Backup-Verzeichnis:

$ mkdir /var/moodledata
$ chmod -R 777 /var/moodledata
$ mkdir /root/backups

Java installieren:

$ apt update
$ apt install default-jre

Laden Sie Apache JMeter von der offiziellen Website herunter und speichern Sie es im /opt-Verzeichnis:

$ wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.tgz
$ tar -xzf apache-jmeter-5.4.tgz -C /opt

Holen Sie sich das Moodle-Leistungsvergleichstool von Github und legen Sie es unter dem standardmäßigen Dokumentenstammverzeichnis des Apache-Webservers unter /var/www/html ab, und kopieren Sie auch die Konfigurationsdateien aus ihren Vorlagen:

$ cd /var/www/html
$ git clone https://github.com/moodlehq/moodle-performance-comparison
$ cd moodle-performance-comparison
$ cp webserver_config.properties.dist webserver_config.properties
$ cp jmeter_config.properties.dist jmeter_config.properties

Öffnen Sie jmeter_config.properties und bearbeiten Sie die folgende Zeile:

jmeter_path=/opt/apache-jmeter-5.4

JMeter-Testplan ausführen

Die einfachste Möglichkeit, einen Moodle-Benchmark mit diesem Tool auszuführen, besteht darin, einen lokalen Moodle-Benchmark auszuführen, bei dem die Skripte automatisch die Moodle-Anwendung von Github abrufen, die Datenbank einrichten und die erforderlichen Konfigurationen für eine lokale Testumgebung festlegen. Was wir tun müssen, ist Folgendes in der webserver_config.properties anzugeben:

dbtype="mysqli"
dbhost="localhost"
dbuser="moodleperformance"
dbpass="mys3cret"
wwwroot="http://18.141.187.189/moodle-performance-comparison/moodle"
dataroot="/var/moodledata"
backupsdir="/root/backups"

Wobei 18.141.187.189 die öffentliche IP-Adresse dieses JMeter-Servers ist. Das zu bewertende Moodle ist unter http://18.141.187.189/moodle-performance-comparison/moodle zugänglich. Sobald das obige konfiguriert ist, navigieren Sie zu /var/www/html/moodle-performance-comparison:

$ cd /var/www/html/moodle-performance-comparison

Als Erstes müssen Sie die Moodle-Testseite mit einer Reihe von Daten versorgen. Die Größe der Moodle-Site kann wie folgt bestimmt werden:

Größe

Testplan

XS

1 Benutzer, 5 Schleifen und 1 Hochlaufzeit

S

30 Nutzer, 5 Schleifen und 6 Anlaufphase

M

100 Nutzer, 5 Schleifen und 40 Anlaufphase

L

1000 Nutzer, 6 Schleifen und 100 Anlaufphase

XL

5000 Nutzer, 6 Schleifen und 500 Anlaufphase

XXL

10000 Benutzer, 7 Schleifen und 800 Anlaufphase

Und führen Sie das Skript before_run_setup.sh aus, um eine Moodle-Site mit der Größe XS zu erstellen:
$ ./before_run_setup.sh XS
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.

#######################################################################
Installing Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0)

Moodle site configuration finished successfully.
Creating Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0) database and dataroot backups
mysqldump: [Warning] Using a password on the command line interface can be insecure.

Upgrading Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0) to master

#######################################################################
'Before' run setup finished successfully.

Note the following files were generated, you will need this info when running
testrunner.sh in a different server, they are also saved in test_files.properties.
- Test plan: /var/www/html/moodle-performance-comparison/moodle/testplan.jmx
- Test users: /var/www/html/moodle-performance-comparison/moodle/testusers.csv
- Dataroot backup: /root/backup/dataroot_backup_202101090901
- Database backup: /root/backup/database_backup_202101090901.sql

Now you can:
- Change the site configuration
- Change the cache stores
And to continue with the test you should:
- Run restart_services.sh (or manually restart web and database servers if
  this script doesn\'t suit your system)
- Run test_runner.sh

Bevor wir den Benchmark starten, wird empfohlen, die Web- und Datenbankserver neu zu starten, damit wir ein gutes Ausgangsergebnis erhalten:

$ ./restart_service.sh
#######################################################################
Services restarted successfully.

Now you can begin running the tests with test_runner.sh.

Jetzt können wir den JMeter-Benchmark mit dem Skript test_runner.sh ausführen:

$ ./test_runner.sh Group1 Run1
#######################################################################
Test running... (time for a coffee?)

Jan 09, 2021 9:03:55 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

Warning: Nashorn engine is planned to be removed from a future JDK release

#######################################################################
Test plan completed successfully.

To compare this run with others remember to execute after_run_setup.sh before
it to clean the site restoring the database and the dataroot.

Wir haben jetzt unseren ersten Lauf absolviert und eine Leistung auf einer einfachen Moodle-Site erzielt. An diesem Punkt können Sie Leistungsoptimierungen und Optimierungen an Ihrem Datenbankserver, PHP, Apache-Webserver oder anderen Komponenten im Zusammenhang mit Moodle vornehmen und den zweiten Lauf ausführen, um zu vergleichen, ob die angewendete Optimierung sinnvoll ist. Bevor wir den zweiten Benchmark durchführen, müssen wir das Skript after_run_setup.sh ausführen, um die Test-Moodle-Site vorzubereiten und zu bereinigen, wo das Skript die Datenbank und die Moodle-Datenwurzel wiederherstellt:

$ ./after_run_setup.sh

Jetzt können wir den zweiten Benchmark ausführen:

$ ./test_runner.sh Group1 Run2
#######################################################################
Test running... (time for a coffee?)

Jan 09, 2021 9:03:55 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

Warning: Nashorn engine is planned to be removed from a future JDK release

#######################################################################
Test plan completed successfully.

To compare this run with others remember to execute after_run_setup.sh before
it to clean the site restoring the database and the dataroot.

Benchmark-Ergebnisse


Die Benchmark-Ergebnisse sollten unter http://18.141.187.189/moodle-performance-comparison/ erscheinen und zugänglich sein. Der folgende ganzseitige Screenshot ist ein Beispiel für Ergebnisse, die Sie erhalten würden:

Der Vergleich ermöglicht es uns zu verstehen, welche Aspekte oder Komponenten der Moodle-Site zwischen den Läufen verbessert wurden. Es ist gut, den Benchmark mehrmals durchzuführen, um einen aussagekräftigen Durchschnitt zu erhalten, bevor Sie letztendlich eine Entscheidung treffen, ob eine bestimmte Einstellung gute oder schlechte Ergebnisse auf der Moodle-Site erzielt hat.

Es gibt viele andere Möglichkeiten, den JMeter-Benchmark wie hier beschrieben durchzuführen. Sie können den Benchmark direkt auf der Live-Site ausführen (nicht empfohlen) oder die lokale Moodle-Testsite mit den Daten aus der Produktion bereitstellen, indem Sie die Sicherung der Produktionsdatenbank und des Moodledata-Verzeichnisses verwenden, oder den Benchmark auch lokal gegen mehrere Versionen von Moodle ausführen Installation, um den Leistungsgewinn oder -verlust für jede Version zu vergleichen.