Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment comparer les performances de Moodle

Moodle, le système de gestion de l'apprentissage (LMS) le plus populaire au monde, est couramment déployé dans un environnement à croissance rapide et à grande échelle. Heureusement, Moodle est conçu dans un souci de disponibilité et d'évolutivité, avec de nombreux outils, pour nous aider à gérer une grande infrastructure. Les infrastructures Moodle à grande échelle peuvent être configurées sur différents types de machines, du métal nu aux conteneurs virtuels compartimentés (ou pods Kubernetes) et impliqueraient généralement une architecture à plusieurs niveaux pour des équilibreurs de charge séparés, des serveurs Web, des serveurs de cache, des serveurs de stockage centralisés / en cluster et serveurs de bases de données.

Dans cet article de blog, nous allons vous montrer comment effectuer un benchmark de votre site Moodle, ce qui nous permettra de comprendre comment notre site Moodle fonctionne sur une période donnée. Dans une configuration en cluster, les performances d'un cluster Moodle peuvent être influencées par divers facteurs tels que les ressources matérielles, la surcharge de virtualisation, les latences du réseau entre les serveurs, les pare-feu, la mise en cache et bien d'autres, et effectuer des tests de performance est un moyen solide de tester et d'estimer les performances de Moodle. avant qu'il ne passe en production.

Plug-in d'analyse comparative des rapports

Tout d'abord, il est bon de savoir quand notre configuration est inactive et également dans un environnement à forte charge. Il est fortement recommandé d'installer le plugin Report Benchmark pour Moodle, qui effectue divers tests pour déterminer la qualité de la plate-forme Moodle à l'aide d'un système de notation. Ce score compare votre système et votre vitesse à certaines valeurs seuils (acceptables et critiques), comme dans la capture d'écran suivante :

Une fois le plugin installé, allez dans Administration du site -> Rapports -> Benchmark -> Démarrer le benchmark pour effectuer le benchmark. Les tests de référence devraient durer moins de 1 minute et seront interrompus à 2 minutes malgré tout, révélant s'il y a des soucis sur votre plate-forme. Plus le score est bas, mieux c'est, et si tout est vert, cela indique généralement que notre site Moodle devrait être en bon état. Il existe essentiellement 5 groupes de test :

  • Vitesse du serveur
  • Vitesse du processeur
  • Vitesse du disque dur
  • Vitesse de la base de données
  • Vitesse de chargement de la page

Dans les cas où Moodle se comporte plus lentement que prévu, vous verrez des cases non vertes apparaître dans le rapport de référence, comme indiqué dans l'exemple suivant :

Plus bas dans le rapport, vous pouvez obtenir le résumé du benchmark. Dans le cas ci-dessus, nous avons créé un outil Apache Benchmark (ab) pour tester le site Web avec 20 connexions d'utilisateurs simultanées et exécuter simultanément ce rapport de référence et observer les performances de Moodle. La justification sommaire, bien qu'elle soit assez large dans les aspects de réglage, pourrait nous aider à réduire le domaine qui doit être amélioré comme l'optimisation de la base de données, le cache Moodle et les ressources matérielles.

Il est recommandé d'effectuer plusieurs fois ce test de référence pour obtenir une moyenne significative. Si les performances de votre installation ne sont pas optimales, vous trouverez quelques recommandations pour l'améliorer dans la documentation de Moodle. N'exécutez pas ce benchmark sur une plate-forme de production pendant les heures d'activité, car cela pourrait entraîner une dégradation significative des performances.

Apache JMeter

Apache JMeter est une application Java conçue pour tester le comportement fonctionnel et mesurer les performances des applications Web statiques et dynamiques. Il peut être utilisé pour simuler une charge importante sur un serveur, un groupe de serveurs, un réseau ou un objet afin de tester sa résistance ou d'analyser les performances globales sous différents types de charge.

Depuis Moodle v2.5 et versions ultérieures, il est livré avec un générateur de plan de test JMeter pour simplifier le processus de test de charge avec JMeter grâce à deux scripts intégrés - "Make test course" et "Make JMeter test plan", tous deux disponibles sous Administration du site -> Développement , complété par un ensemble de modules complémentaires de comparaison des performances Moodle. Pour que vous puissiez utiliser cette fonctionnalité via l'interface Web Moodle, vous devez basculer Moodle en mode développeur sous Administration du site -> Développement -> Débogage -> Messages de débogage -> DÉVELOPPEUR :messages de débogage supplémentaires de Moodle pour les développeurs . Sinon, utilisez les outils CLI disponibles sous le répertoire {Moodle}/admin/tool/generator/cli.

Notez que le test JMeter ne doit pas être effectué sur un système de production. Les scripts de plan de test génèrent des données et chargent délibérément le serveur à sa limite et au-delà, le rendant souvent surchargé et ne répondant plus. Ne les exécutez même pas sur une instance Moodle distincte sur le serveur de production, en vous connectant au même système de base de données de production, car cela affectera directement les performances.

Déployer le serveur JMeter

Pour simplifier les instructions, nous exécutons toutes nos commandes en tant qu'utilisateur root. Sur le serveur JMeter, installez tous les packages nécessaires :

$ 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

Créez un utilisateur MySQL privilégié à utiliser par l'outil de comparaison de performances Moodle. Il n'est pas nécessaire de créer une base de données au préalable :

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

Créez la racine des données et le répertoire de sauvegarde :

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

Installer Java :

$ apt update
$ apt install default-jre

Téléchargez Apache JMeter depuis le site officiel et stockez-le sous le répertoire /opt :

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

Obtenez l'outil de comparaison des performances Moodle de Github et placez-le sous la racine du document par défaut du serveur Web Apache à /var/www/html, et copiez également les fichiers de configuration à partir de leurs modèles :

$ 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

Ouvrez jmeter_config.properties et modifiez la ligne suivante :

jmeter_path=/opt/apache-jmeter-5.4

Exécuter le plan de test JMeter

Le moyen le plus simple d'exécuter un benchmark Moodle à l'aide de cet outil consiste à exécuter un benchmark Moodle local, où les scripts extrairont automatiquement l'application Moodle de Github, configureront la base de données et définiront les configurations nécessaires pour un environnement de test local. Ce que nous devons faire est de spécifier ce qui suit dans le fichier webserver_config.properties :

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

Où 18.141.187.189 est l'adresse IP publique de ce serveur JMeter. Le Moodle qui sera évalué est accessible à http://18.141.187.189/moodle-performance-comparison/moodle . Une fois ce qui précède configuré, accédez à /var/www/html/moodle-performance-comparison :

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

La première chose est de charger le site de test Moodle avec un ensemble de données. La taille du site Moodle peut être déterminée par les éléments suivants :

Taille

Plan de test

XS

1 utilisateur, 5 boucles et 1 période de montée en puissance

S

30 utilisateurs, 5 boucles et 6 périodes de montée en puissance

M

100 utilisateurs, 5 boucles et 40 périodes de montée en puissance

L

1 000 utilisateurs, 6 boucles et 100 périodes de montée en puissance

XL

5 000 utilisateurs, 6 boucles et 500 périodes de démarrage

XXL

10 000 utilisateurs, 7 boucles et 800 périodes de démarrage

Et exécutez le script before_run_setup.sh pour créer un site Moodle avec la taille XS :
$ ./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

Avant de commencer le benchmark, il est recommandé de redémarrer les serveurs Web et de base de données afin d'obtenir un bon résultat de base :

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

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

Nous sommes maintenant prêts à exécuter le benchmark JMeter en utilisant le script test_runner.sh :

$ ./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.

Nous avons maintenant terminé notre première exécution et obtenu une performance sur un site Moodle ordinaire. À ce stade, vous pouvez effectuer tout réglage et ajustement des performances de votre serveur de base de données, PHP, serveur Web Apache ou tout autre composant lié à Moodle et exécuter la deuxième exécution pour comparer si le réglage appliqué a du sens. Avant de faire le deuxième benchmark, nous devons exécuter le script after_run_setup.sh pour préparer et nettoyer le site de test Moodle où le script restaurera la base de données et la racine de données Moodle :

$ ./after_run_setup.sh

Nous sommes maintenant prêts à exécuter le deuxième benchmark :

$ ./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.

Résultats de référence


Les résultats du benchmark doivent apparaître et être accessibles sur http://18.141.187.189/moodle-performance-comparison/ . La capture d'écran d'une page entière suivante est un exemple de résultats que vous obtiendriez :

La comparaison nous permet de comprendre dans quels aspects ou composants du site Moodle ont été améliorés entre les exécutions. Il est bon d'effectuer le benchmark plusieurs fois pour obtenir une moyenne significative, avant de décider finalement si un réglage particulier a introduit de bons ou de mauvais résultats sur le site Moodle.

Il existe de nombreuses autres façons d'effectuer le benchmark JMeter comme décrit ici. Vous pouvez exécuter le benchmark directement sur le site en direct (non recommandé), ou mettre en scène le site de test Moodle local avec les données de production en utilisant la sauvegarde de la base de données de production et du répertoire moodledata, ou également exécuter le benchmark localement sur plusieurs versions de Moodle installation pour comparer le gain ou la perte de performances pour chaque version.