[Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

[Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

par Patrick Lemaire,
Nombre de réponses : 5
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour à toutes et à tous,

Sur une plateforme Moodle à forte charge (environ 50.000 comptes, des centaines de milliers de ressources/activités) passée cet été de la version 3.1 à 3.5.7, le processus semble s'être déroulé correctement (aucune alerte). Cette même plateforme a connu plusieurs mises à jour majeures.

Cependant, ces derniers jours, certains des utilisateurs se sont plaints de la lenteur des sauvegardes et des restaurations de leurs cours (tous très volumineux à la base). Ces cours comprennent une ou plusieurs activités Test avec beaucoup de questions aléatoires...

Après avoir fait tourner beaucoup de benchmarks autour du serveur et des différents services (apache, postgresql notamment) et aucun constat de problème de performance (serveur sous Linux CentOS, 24 cœurs CPU, 64 Go de RAM, disques SSD, ....).

Suite à de nouvelles recherches plus poussées, on constate que le nombre de questions référencées dans la table mdl_questions augmente exponentiellement : 300 000 questions sur la version 3.1.12 (avant migration) et plus de 3 600 000 questions maintenant sur la nouvelle version (3.5.7). Apparemment, chaque duplication ou restauration d'un cours incluant un Test avec des questions aléatoires a un impact négatif sur cette table et augmente considérablement le nombre de lignes ....

Nous avons déjà essayé de lancer en commande cli la tâche planifiée'qtype_random\task\remove_unused_questions' (cf MDL-63260) sans effet ni succès...

Existe-t-il une autre solution pour résoudre ce problème... Cette plateforme Moodle devient de moins en moins réactive et nous ne savons pas comment la réparer !!!!!

Merci d'avance pour votre aide ou vos conseils...

Ce message a également été posté sur le forum en anglais (https://moodle.org/mod/forum/discuss.php?d=391233).

À bientôt,
Patrick

Moyenne des évaluations  -
En réponse à Patrick Lemaire

Re: [Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

par Jean-Gabriel DEPINOY,
Avatar Moodleurs particulièrement utiles

Bonjour Patrick,

Est-ce que tu as essayé de vérifier dans Administration du site>Développement>Editeur XMLDB>Vérifier les clés extérieures que de nombreuses questions n'étaient pas devenues "orphelines"? Peut-être que cette manip sera plus fructueuse que ta tâche planifiée...

Moyenne des évaluations Utile (1)
En réponse à Jean-Gabriel DEPINOY

Re: [Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Merci Jean-Gabriel pour cette piste.

Les informations remontées corroborent celles de l'outil caché 'admin/tool/health' en ce qui concerne les questions aléatoires (plus plein d'autres petites bombes en puissance 😩)


Après application de la « Solution » fournie par ce script pour réduire les inconsistances sur un serveur de test, les résultats paraissent encourageant.

Toute autre piste ou idée est la bienvenue !!!

Merci,
Patrick


En réponse à Patrick Lemaire

Re: [Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

par Service Usagers du Numérique,

Bonjour Patrick et Jean-Gabriel,

Merci pour votre aide et votre analyse, qui s'est avérée être la bonne.

Nous avons appliqué la requête recommandée sur la table mdl_question.

Nous avons ensuite lancé plusieurs fois en ligne de commandes le script "php admin/tool/task/cli/schedule_task.php --execute=\\qtype_random\\task\\remove_unused_questions" afin de nettoyer la table mdl_question, qui est passée de plus de 3 millions d'occurrences à 300 000 occurrences (chaque itération supprimant 10 000 questions aléatoires inutilisées dans la table).

On suspecte le traitement de mise à jour de moodle 3.1.18 à 3.5.7 d'avoir occasionné ces problèmes d'intégrité dans la table mdl_question, qui se sont retrouvés amplifiés par des sauvegardes/restaurations répétées des espaces de cours contenant des quiz avec questions aléatoires.

Encore merci.

L'équipe du SUN

Moyenne des évaluations Utile (1)
En réponse à Service Usagers du Numérique

Re: [Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

par Caroline Tartary,

Bonjour à tous,

J'ai rencontré dernièrement le même problème mais un point reste obscur pour moi :

Si je lance le script dans la console directement sur le serveur avec la commande php admin/tool/task/cli/schedule_task.php --execute=\\qtype_random\\task\\remove_unused_questions : le script met 5 à 6 minutes pour s'exécuter et j'ai 

600005 lectures
191200 écritures

D'après le journal des tâches programmées.

Par contre quand ce même script est lancé par la tâche programmée dans l'interface administration, j'ai un temps d'exécution de 1 à 2 min et 
100005 lectures
40200 écritures

Pourquoi ce différentiel ? Malgré le mot "succès" en face de résultat, j'ai l'impression que la tâche fonctionne mieux en ligne de commande.

Ce n'est pas très grave mais j'aime bien comprendre  grand sourire

Caroline



En réponse à Caroline Tartary

Re: [Moodle 3.5.7] La table "Questions" grossit exponentiellement depuis le passage à 3.5

par Service Usagers du Numérique,

Bonjour,

Sans assurance, voici mon analyse sur la question.

  • La tâche lancée via l'interface d'administration Moodle va s'exécuter à travers le serveur web (apache ou nginx, usuellement)
  • La tâche lancée via une console système sera quant à elle exécutée dans un process unix distinct, qui ne reposera pas sur l'utilisation d'un processus du serveur web
Le niveau de priorité (système)  accordé aux deux types de processus peut être différent, ainsi que les ressources allouées (php.ini distinct en mode cli et en mode apache). L'exécution au travers du serveur apache peut également être plus contrainte afin de ne pas écrouler ledit service (via des mécanismes internes à apache/nginx voire des mécanismes logiciels intégrés dans le script schedule_task).

Bien cordialement,

O.L.
Moyenne des évaluations Utile (1)