Montée en charge / performances Moodle

Re: Montée en charge / performances Moodle

par Pascal Maury,
Nombre de réponses : 0
Avatar Développeurs de plugins

Bonjour,

Je me réponds à moi-même 1 an après ... :D

Configuration actuelle
La configuration actuelle est celle décrite dans mon message précédent (1 serveur de BD MAC Xserve, 1 serveur web Supermicro). Nous avons d'autres sites internet et d'autres bases installés sur ces serveurs. Nous avons aussi une 2e plate-forme Moodle sur un autre serveur Supermicro identique.

Statistiques
Notre plate-forme compte aujourd'hui 544 cours et 13 000 utilisateurs. Mais 2500 ne sont se sont pas connectés depuis la rentrée et 4500 se sont connectés il y a plus de 3 mois. Donc on considère que 8500 utilisateurs sont réellement actifs.

Piwik
Mes projections étaient bonnes; Piwik nous permet de voir le nombre nombre de visiteurs, depuis le mois de septembre 2010 à ce jour :doublé
- moyenne de 42 180 visites par mois, pics :
> 62 750 en novembre 2010
> 54 163 en mars 2011

- moyenne de 1406 visites par jour, pics :
> 3080 visites en novembre 2010
> 2621 visites en janvier 2011
NB : Piwik est installé dans le "thème" donc fonctionne sur tout le site.

Logs Moodle
Au niveau des logs de moodle (table logs) :
- moyenne de 14 000 actions et 700 utilisateurs distincts par jour, pics :
-> 70 000 actions / jour et 1500 utilisateurs distincts en janvier 2011

- moyenne de 66 actions et 25 utilisateurs distincts par tranche de 5 minutes, pics : (1)
-> 2239 actions/5 minutes (par 61 utilisateurs distincts) en mars 2011
-> 227 visiteurs dans les 5 minutes (ayant effectué 648 actions dans la tranche des 5') en janvier 2011

Cependant, nous avons eu des pics plus de 5000 visites/jour l'année dernière (alors qu'il y avait beaucoup moins d'utilisateurs) lors de la période des examens de juin.
Ces pics avait généré des ralentissements malgré le changement de serveur. Le problème venait en fait de la configuration du serveur MYSQL.
Le processeur de ce dernier était à 60/80% au lieu de 20% en temps normal.
Nous avons fait les modifications suivantes au niveau de la configuration de MYSQL :
table_cache = 1024            / au lieu de 512
thread_concurrency = 16    /au lieu de 8
max_connections = 1500      / au lieu de 500

Depuis, nous n'avons plus observé de ralentissements et le processeur du serveur est à 20% d'activité en moyenne sans pics visibles (hors sauvegardes). Mais nous attendons de passer juin cette année pour analyser la charge à ce moment là.

(1) Ces statistiques ont été déterminé via le script que je joins en PJ. Il s'agit d'un script très basique, non optimisé, qui me sert de point de départ pour mes statistiques. Cependant, le temps que je regarde ce qui existe et que j'améliore ce script, il peut se passer du temps. Je fournis donc le script avec la mise en garde suivante : bien qu'il renvoie une page HTML, le script est finalement trop lourd pr être executer via le navigateur (en tout cas avec ma table de log de 3 500 000 de lignes). Je l'ai donc lancé en ligne de commande :
$ php -f outil_comptage_log.php > resultat.html
Pour info, le temps d'execution a été de 3.5 minutes de mon coté. De plus, je constate certains écarts entre le nombre de lignes que je trouve par jour avec la page http://moodle.xx/course/report/log/index.php (qui exploite la même table log) et ce que je trouve dans mon script (cependant la somme des actions est la même).
Ce script est donc fourni sans garantie !

Perspective.php
Je relance aujourd'hui ce script et j'obtiens le même résultat. Mais à part ce constat, je ne sais toujours pas comment interpreter ce script ni ces chiffres !
Processor performance
Function calls     3034000     3051000
Regular expression replaces over 1KB of text     18100     18100
Disk performance
16KB files read from disk (cache)     79700     80200
16KB files written to disk (cache)     700     800
Database performance
Get_record calls on the course table     1900     1900
Insert_record calls on the course table     670     700
Update_record calls on the course table     210     210
Maximum concurrent users (approx):     178

Projection
Moodle s'adresse à nos 35 000 utilisateurs potentiels. Cependant, à ce jour seul un tiers voir un quart l'utilise aujourd'hui. Avec le succès de l'automatisation de la création de cours pour les enseignants mise en place cette année, je pense que les chiffres vont doubler à la rentrée prochaine. Peut être que le nombre d'utilisateurs total ne dépassera pas les 20 000 utilisateurs mais les visites et l'activité générale devrait augmenter significativement.
Je table sur une moyenne de 2500 visites par jour et 3500 ou 4000 en pointe (voir 6000 en juin mais nous en saurons plus avec l'activité de "juin 2011").

Pour autant, il ne me semble pas nécessaire de changer de configuration. Nous mettons actuellement en place des outils pour connaitre précisément l'occupation de nos serveurs (CPU, RAM, disque, etc ...). Le serveur de base de données nécessitera peut être un upgrade.

Afin d'anticiper l'intensification de l'activité mais aussi pour réduire les risques d'interruption de service, nous envisageons à terme de migrer vers des systèmes virtualisés (déjà en place pour d'autres serveurs).

Connexions simultanées
Je ne peux pas dire aujourd'hui combien de connexions simultanées mon infrastructure peut supporter, tout d'abord car il faudrait définir cette notion et car je ne sais toujours pas comment la calculer réellement.
Les outils d'occupation de nos serveurs liés aux statistiques devraient nous éclairer, notamment avec le passage de juin.

Pascal

Moyenne des évaluations Utile (2)