Base de données externe et requêtes en grand nombre

Base de données externe et requêtes en grand nombre

par thierry cotte,
Nombre de réponses : 4

Bonjour,
   
    mon problème concerne les accès de moodle à notre base de données métier via le plugnin d'inscription base de données externe.
   
    Moodle 3.6.5 fonctionne avec un frontal en load balancing sur deux serveurs apache.
   
    Le plugin base de données externe est configuré pour pointer sur des vues de notre base de données, comportant le nom des cours, les utilisateurs inscrits aux cours, et leur rôle.
   
    Le problème concerne donc la synchronisation des inscriptions.
   
    J'ai été alerté par mon collègue gestionnaire des bases de données métiers, que moodle envoyait énormément de requêtes pointant sur la vue mentionnée dans le champs:    'Table des inscriptions de la base de données externe'     du plugin base de données externe.

    Concrètement, chaque jour, il y a plus de 250 000 requêtes effectuées, sur chaque serveur, et ce chiffre a tendance à augmenter régulièrement.
    La suppression de l'information dans ce champs stoppe immédiatement les requêtes sur la base métier.
    Dans un premier temps, il n'y a eu aucune incidence sur le fonctionnement de Moodle, car la suppression a été faite bien après la période de synchronisation de l'offre de formation et des inscriptions au cours de septembre,   mais dernièrement, avec le passage au 2ème semestre, les inscriptions à certains cours ne sont pas remontées, ce qui parait logique.
   
    Nous avons rempli à nouveau le champ 'Table des inscriptions de la base de données externe' et petit à petit, les inscriptions se sont synchronisées.
   
    J'aimerais donc savoir si
    - quelqu'un a remarqué ce grand nombre de connexions sur les bases métiers,
    - comment fonctionne le plugin base de données externe,
    - s'il est normal que chaque connexion d'utilisateur génère une multitude de requêtes sur nos serveurs.
    - Pourquoi les inscriptions aux cours ne se font pas d'un coup, et qu'elles ont évoluées lentement après le retour à la situation initiale.
    Je précise que ce comportement n'a pas été remarqué suite à la dernière mise à jour de moodle en juillet (v 3.6.5+), mais existait auparavant dans de moindre proportions.

    J'espère avoir été clair.
   
    Merci d'avance pour vos retours.

Moyenne des évaluations  -
En réponse à thierry cotte

Re: Base de données externe et requêtes en grand nombre

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Thierry,

Pour utiliser également l'inscription par base de données externe, celle-ci interroge la base externe :
Suivant votre nombre d'usagers, de cours, et d'inscriptions, ce nombre est peut-être logique.

Séverin
En réponse à Séverin Terrier

Re: Base de données externe et requêtes en grand nombre

par thierry cotte,
Merci Séverin pour cette réponse rapide ,

nous avons environ 7000 usagers actifs, 3000 cours et 311 000 inscriptions aux cours.

Donc le script de synchronisation globale crée toutes les inscriptions d'un coup, ce qui veut dire que les informations existent dans la base Moodle, et je comprends bien que chaque authentification d'utilisateur génère une requête d'identification.
Par contre, je ne comprends pas pourquoi le requête
SELECT * FROM notre table de référence WHERE PERS_ID = numéro user
est exécutée en avalanche, que se soit à la connexion mais aussi aux changement de page, activité etc..

D'autre part, dans le plugin Bdd externe, il y a aussi création de nouveaux cours. Est - ce le même principe de connexion?
En réponse à thierry cotte

Re: Base de données externe et requêtes en grand nombre

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Thierry,
J'utilisais cette méthode autrefois et les requêtes ne devraient pas se produire autrement que dans les 2 cas cités par Séverin (synchro globale et à chaque authentification). Il n'est donc pas normal de constater des requêtes lors du chargement d'une page.
Pour ce qui est de la création d'un cours via la BDD, je ne sais pas comment se comporte le script mais j'imagine qu'il regarde en premier si un cours nouveau doit être créé. Peux-tu préciser ta question sur ce point ?

À noter, ma je ne sais pas si ça impacte ton contexte, un changement depuis la version 3.7 de Moodle : la tâche programmée rend le script CLI déprécié ! Si celle-ci est active, alors le script ne fera plus rien. J'ai essayé d'adapter la doc officielle (cf lien direct) mais comme je n'utilise pas cette méthode, ça reste brouillon 😢
À bientôt,
Patrick
En réponse à Patrick Lemaire

Re: Base de données externe et requêtes en grand nombre

par thierry cotte,

Bonjour Patrick.


Merci pour ta réponse.

Concernant ma question sur la création d'un cours, elle n'était effectivement pas claire.

Je me demande si le fonctionnement est le même pour la création des cours que pour l'inscription des utilisateurs.

La synchro des utilisateurs teste si les utilisateurs sont inscrits dans un cour, et sinon ils sont insérés dans les tables Moodle, et pour les cours c'est la même chose je pense.

Lorsque, suite à ces synchros, tous les utilisateurs sont inscrits dans les cours en fonction des données de la base externe, si on coupe la synchro en enlevant le nom de la table dans le plugin, tout se passe bien, toutes les données sont présentes dans les tables, et Moodle n'a donc plus besoin de cette synchro pour être à jour, sauf en cas de modifications en amont.

Si la synchro des inscriptions et la création des nouveaux cours marchent de la même façon, on aurait alors deux requêtes, pointant sur 2 tables différentes, ce qui n'est pas le cas. Seule la synchro des utilisateurs nous noie sous les requêtes.

Je règle le problème en enlevant l'information de la table utilisateur dans le plugin, mais le risque de ne pas être à jour par rapport à l'offre de formation scol est présent.

Nous allons passer en version supérieure de Moodle dans quelque temps, et je verrai si le problème subsiste.


Thierry