Important : vérifiez vos entrepôts de cache

Important : vérifiez vos entrepôts de cache

par Séverin Terrier,
Nombre de réponses : 21
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Une petite recommandation, préventive, pour éviter de rencontrer des problèmes avec votre Moodle : vérifiez vos entrepôts de cache.
En effet, s'ils sont mal configurés, vous risquez de rencontrer des erreurs (comme "Exception - Call to undefined method cachestore_dummy::find_by_prefix()"), qui peuvent avoir des conséquences gênantes (voir le cas que j'ai rencontré).

En tant qu'administrateur, depuis "Administration du cache", vérifiez les "Entrepôts de cache installés". Si pour Cache de fichiers, Cache de session et Cache statique de requête, vous n'avez aucun entrepôt installé (valeur 0 au lieu de 1), vous risquez de rencontrer des soucis.

Il faut donc faire en sorte de créer ces entrepôts de cache. Une solution simple : supprimer (ou par prudence renommer) le fichier $CFG->moodledata/muc/config.php

Moodle recréera automatiquement ce fichier, ainsi que les entrepôts de données associés. Vous devriez ainsi vous éviter des risques de désagréments.

Séverin

PS : Luiggi, cette vérification devrait certainement être ajoutée à la liste des vérifications à faire pour la bonne santé de son Moodle clin d’œil

Moyenne des évaluations Utile (6)
En réponse à Séverin Terrier

Re: Important : vérifiez vos entrepôts de cache

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

Bonjour Séverin,

La gestion des caches introduite avec Moodle 2.7 recouvre tout un univers invisible. La doc francophone mérite un « coup de pouce » sur ce point langue tirée (cf doc anglophone).

Chez nous, de très rapides recherches montrent que Benjamin (cf fil1, fil2, fil3) semble bien avoir creusé la question des caches... S'il passe par ici, peut-être pourra-t-il nous éclairer sur ces problématiques ?

J'avoue personnellement ne pas avoir approfondi ce qui semble être un facteur de performance important pour de (très) grosses instances. Je laisse Moodle tout gérer "par défaut" aveuglément pensif

À bientôt,
Patrick

En réponse à Patrick Lemaire

Re: Important : vérifiez vos entrepôts de cache

par Valery Fremaux,
Avatar Développeurs de plugins

En effet, la question des caches est absolument essentielle pour la gestion des performances et du "vécu" des utilisateurs sur la plate-forme.

De base, l'ensemble des caches est géré dans moodledata, et est constitué de 3 répertoires :

- cache

- localcache

- muc

L'utilisation de ces 3 répertoires est différente :

- muc : Ne contient qu'une "copie" précompilée de toutes les configurations des plugins installés. Un muc perverti peut en effet donner de grosses surprises de fonctionnement.

- cache : contient l'essentiel du cache qui doit être partagé par toutes les instances dans le cas d'une installation avec répartition de charge (les sessions et les caches de données qui concernent l'usage "collectif" des contextes de moodle, et que donc chaque utilisateur doit pouvoir consulter quelque soit son cluster d'entrée / La centralisation ne concerne encore que les installations réparties)

- localcache : la partie du cache qui peut être maintenue localement sur chaque cluster, indépendamment des autres clusters (par exemple les caches de texte ou les caches de ressources précompilées du thème, que chacun utilise mais pour sa propre navigation)

En général, sur des serveurs bas de gamme, le stockage disque est placé sur des disques SATA2 classiques, qui ont un taux d'accès assez bas (c'est encore pire sur des NAS). Si cette lenteur affecte peu les fichiers "statiques", comme un word ou un pdf à consulter de temps en temps par un étudiant, l'effet sur la performance du cache est mauvaise. Le cache est ralenti et la plate-forme peu dynamique.

Pour augmenter les performances, il y a alors 2 solutions :

- Configurer les instances de cache (là où le dit Severin) et utiliser des "serveurs de cache" (memcache et/ou memcached)

- déplacer les caches sur des systèmes de fichier plus rapide. Une bonne idée est de déplacer le cache sur un SSD annexe si on en a un à côté du stockage principal de masse.  (en général on y mettra aussi tout le système d'exploitation pour les mêmes raisons)

- Encore mieux (et surtout si on a pas de SSD) : affecter une partie de sa ram à un ramdisk et poser le cache dessus (500Mo pour un petit moodle, jusqu'à 2/4G pour des gros). Le ramdisk sera le plus rapide de tous, mais a un seul inconvénient : sur linux, sa taille est fixe et il ne peut déborder. S'il déborde, le cache se bloque et .... on peut imaginer ce qui se passe.

- La restriction sur memcached est la suivante : Depuis quelques versions, moodle a ajouté le principe de gérer un memcached par cluster et effectuer une synchronisation locale de tous les memcached (pour qu'ils aient les mêmes données) au moment de l'écriture dans le cache. Chaque cluster écrira alors dans la liste de memcached (donnés par leur IP). au moment d'une écriture. (Comme on passe beaucoup plus de temps à lire le cache qu'à l'écrire, cette stratégie semble à priori meilleure qu'aller systématiquement lire dans un memcached centralisé sur un serveur tiers).

Ceci marche bien jusqu'à un certain point ; (le problème est un problème de garantie de haute disponibilité) si un seul des cluster tombe et son memcached s'arrête, alors c'est toute la plate-forme qui ne marche plus : chaque cluster essayera d'aller écrire dans le memcached éteint, et se prendra un timeout de 20 secondes QUELQUE SOIT la page.  

Comme la répartition de charge sur plusieurs serveur est aussi souvent motivé par un désir de pouvoir gérer ses mises à jour système progressivement sans arrêter la plate-forme, on voit tout de suite que cette stratégie tombe à l'eau.

Pourquoi le cache est devenu si important.

Introduit vers la version 2.6, peu de données étaient cachées au départ. l'API de cache étant à la disposition des développeurs, chaque plugin peut se saisir du cache pour y cacher des données à lui. Au fil des versions de plus en plus de données y sont cachées (la structure des catégories de cours, la composition des groupes, des éléments du carnet de notes, les éléments de la banque de question etc....). Effet positif : tout un paquet de fonctionnalités n'auraient pas pu s'ajouter à moodle sans l'effet accélérateur de ces caches. Effet pervers : une stratégie de cache non optimisée conduit à des moodle qui "rament" ou dont la dynamique individuelle de page est peu dynamique et satisfaisante.

Salut à tous

Valery



Moyenne des évaluations Utile (6)
En réponse à Valery Fremaux

Re: Important : vérifiez vos entrepôts de cache

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

Bonjour,

Intéressé mais complètement "à l'ouest" face à cette problématique.

A part vider les caches de Moodle et ceux de mon navigateur je ne sais rien faire d'autre.timide

Si cela suffit concernant Moodle, est-il possible d'utiliser une sorte de commande cron qui le fasse à intervalle régulier ?

Si oui quelle commande lancer et à quelle période de temps ?

N'y a-t-il pas la possibilité aussi de le faire dans les tâches programmées ?

En réponse à Daniel Méthot

Re: Important : vérifiez vos entrepôts de cache

par Christian Bocquet,
Avatar Moodleurs particulièrement utiles

Bonjour Daniel,

Comme toi, j'ai installé Moodle avec cPanel sur un hébergement mutualisé.

Suivant l'avertissement de Séverin, je suis allé vérifier par le chemin :

Tableau de bord  ► Administration du site  ► Plugins  ► Cache  ► Configuration

Doit-on comprendre, de la copie d'écran ci-dessous (et d'après les petits indicateurs verts) qu'en hébergement mutualisé, les entrepôts de cache ont été administrés automatiquement par cPanel lors de l'installation ?



Christian

En réponse à Christian Bocquet

Re: Important : vérifiez vos entrepôts de cache

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

Bonjour Christian,

Ces entrepôts ont effectivement été installés automatiquement, par CPanel, pour ne pas dire par Moodle.

En fait, je pense que par défaut, ils devraient normalement être installés automatiquement sur toute installation Moodle.

Pour ma part, j'ai constaté un problème sur une plateforme Moodle (sur 5 que j'administre en exploitation). Mais vu les soucis générés, il m'a semblé important de signaler ce dysfonctionnement, et la vérification simple à faire, ainsi que la solution simple également.

Séverin

PS : je suis fortement intéressé pour en savoir plus sur les caches, par les personnes bien informées.

En réponse à Séverin Terrier

Re: Important : vérifiez vos entrepôts de cache

par Ludovic ORNON,

Bonjour,

C'est configuré à l'installation de Moodle. Je n'utilise pas cPanel mais le système git pour installer et mettre à jour Moodle et j'ai vérifié avoir le même écran de config que Christian.

Ludovic

Moyenne des évaluations Utile (1)
En réponse à Ludovic ORNON

Re: Important : vérifiez vos entrepôts de cache

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

Je confirme ce qu'écrit Ludovic: la configuration sur la capture d'écran de Christian est celle qui est installée par défaut par Moodle.

En réponse à Nicolas Martignoni

Re: Important : vérifiez vos entrepôts de cache

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

Bonjour,

Il s'agit d'un endroit que je n'avais jamais visité et je constate que j'ai pas mal d'entrepots activés.
Pour certains d'entre-eux j'ai ceci.

caches

Autre question donc: Faut-il régulièrement cliquer sur "purger" ou la simple fonction de "purger tous les caches" suffit-il ?

   ariane

En réponse à Daniel Méthot

Re: Important : vérifiez vos entrepôts de cache

par Ludovic ORNON,

Bonjour Daniel,

De ce que je comprends, "purger tous les caches" doit faire le boulot.

De mon côté, je suis entrain de mettre en place un script de backup et j'utilise la commande "php admin/cli/purge_caches.php" avant de faire le backup. Cela correspond à purger tous les caches et cela réduit de façon vraiment important le répertoire "moodledata". Après la backup, la commande "php admin/cli/build_theme_css.php" pour reconstruire le cache de thème. Cela évite que le css soit recompilé à la première connexion sur le site.

Bonne journée,

Ludovic


Moyenne des évaluations Utile (1)
En réponse à Daniel Méthot

Re: Important : vérifiez vos entrepôts de cache

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

Si c'est une MoodleBox, c'est normal: pour améliorer les performances, je crée des entrepôts supplémentaires. Mais dans ce cas, les caches ont été définis différemment.

En tout  cas, ce n'est donc pas l'installation par défaut de Moodle.

En réponse à Nicolas Martignoni

Re: Important : vérifiez vos entrepôts de cache

par Daniel Méthot,
Avatar Moodleurs particulièrement utiles

Bonjour Nicolas,

Non il ne s'agissait pas d'une MoodleBox mais de mon site principal maintes fois mis à jour...

Où peut-on trouver une information/documentation simple sur :

  1. Ce qu'il faut ou non dans une installation standard ?
  2. Ce qu'on doit faire régulièrement pour que ttout fonctionne au mieux ?

A priori je ne touche jamais ce domaine. Et surtout pas dans les MoodleBox. sourire

En réponse à Daniel Méthot

Re: Important : vérifiez vos entrepôts de cache

par Ludovic ORNON,

Bonjour,

Pour moi c'est une configuration standard sur la capture écran de Daniel. Je n'ai pas touché au cache et j'ai la même chose.

Il y a une section sur les entrepôts installés et ensuite une section sur les configurés. 3 installés et 3 configurés. C'est cohérent.


En réponse à Daniel Méthot

Re: Important : vérifiez vos entrepôts de cache

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

Au temps pour moi, je regardais au mauvais endroit.

En effet, vous avez tous les deux raisons, ces deux entrepôts de cache sont installés par défaut, pas seulement sur MoodleBox.

Pardon pour la méprise.

En réponse à Séverin Terrier

Re: Important : vérifiez vos entrepôts de cache

par chrystele claude giraud,

Bonjour Séverin,

Un Moodle sain nécessite de vérifier ses entrepôts de cache.....Est-ce accessible à la béotienne en informatique que je suis?????... J'ai bien trouvé la page... mais quand je clique sur chaque "rubrique" (dont le contenu est expliqué par Valérie).....je dois effectuer des tests....est-ce que je peux trouver dans le forum, une marche à suivre  qui me dit comment faire pour entrer une ou plusieurs adresses de connexion permettant de tester des serveurs memcache etc.....

A te lire, bien cordialementincertain

Chrystèle Claude

En réponse à chrystele claude giraud

Re: Important : vérifiez vos entrepôts de cache

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

Bonjour Chrystèle,

Mon message avait pour but de permettre à n'importe quel administrateur d'aller facilement vérifier si les entrepôts de cache minimaux étaient bien définis, afin d'éviter les risques de rencontrer certaines erreurs. Une simple consultation de page suffit pour cela.

Et si un tel problème est rencontré, la simple suppression d'un fichier suffit normalement à corriger ce problème.

Si on dérive au niveau de la configuration et de l'optimisation des différents caches, c'est une problématique différentes (certes intéressante, mais que je ne maîtrise pas).

Bien cordialement,
Séverin


En réponse à Séverin Terrier

Re: Important : vérifiez vos entrepôts de cache

par Benjamin Seclier,
Avatar Développeurs de plugins
Bonjour Séverin,
J'ai rencontré le problème ici, supprimer et regénérer mon fichier config.php MUC n'a pas suffit, il a fallu que je supprime une entrée dans le fichier config.php global :
define('CACHE_DISABLE_STORES', true);
J'avais inséré cette ligne pour bypasser les caches, pour du debug, et je l'avais oubliée.

Je pose ça là au cas où quelqu'un soit confronté au même problème.
Bonne journée,
Moyenne des évaluations Utile (1)
En réponse à Benjamin Seclier

Re: Important : vérifiez vos entrepôts de cache

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Ah oui, mais si tu te tends toi-même des pièges clin d’œil

Mais effectivement, ça peut éventuellement être utile, on ne sait jamais sourire
En réponse à Benjamin Seclier

Re: Important : vérifiez vos entrepôts de cache

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Hello Benjamin,
Les caches (navigateur, moodle, php, javascript, etc. etc.) c'est très utile en production. Mais quand on est en mode développement, ça peut être très très pénible. Je rêve d'un gros bouton sur lequel on pourrait cliquer pour a) vider tous les caches et b) empêcher toute mise en cache. Et, pour les étourdis, un autre bouton pour remettre les caches en service !
En réponse à Joseph Rézeau

Re: Important : vérifiez vos entrepôts de cache

par Sébastien Mehr,
Avatar Développeurs Avatar Testeurs
Bonjour Joseph,

A défaut de gros bouton, on peut exécuter une grosse commande :D :

Pour purger les caches :

php /chemin/vers/moodle/admin/cli/purge_caches.php

Si tu disposes de moosh c'est encore moins verbeux :

moosh cache-clear

Moosh permet aussi d'activer ou désactiver le mode debug (qui empêche la mise en cache) :

moosh debug-on ou moosh debug-off


Seb

Moyenne des évaluations Utile (1)
En réponse à Sébastien Mehr

Re: Important : vérifiez vos entrepôts de cache

par samah cherif,

bonjour;

quand je fais purger la définition du cache connue:

--  ''Fonctions de rappel des plugins disponibles'' 

 ou

 -- ''Méta-information de base de données'' 

  je perds accès au formulaire d'inscription : je suis redirigé du signup.php (page formulaire inscription) au index.php (page de login

je suis sur moodle 3.4.2

je ne comprends pas le problème qlq un peut m aider ? 

vous trouverez plus d'information sur le problème et l’environnement dans mon ancien post:  https://moodle.org/mod/forum/discuss.php?d=401229#p1627224

Merci