optimiser les temps de chargement

optimiser les temps de chargement

par Daniel Méthot,
Nombre de réponses : 34
Avatar Moodleurs particulièrement utiles

Bonjour,

En butte à des temps de chargement de pages assez longs sur mes diverses plateformes situées chez mon hébergeur Clermontois... , j'ai activé la fonction permettant d'afficher des informations en bas de page.

Hormis le premier chiffre de 14 secondes avec un débit ADSL descendant approchant les 10Mb/s, tout ceci reste assez obscur pour un néophyte...

14.823413 secs RAM: 31Mo RAM peak: 31.1Mo Included 163 files Contexts for which filters were loaded: 2 Filters created: 6 Pieces of content filtered: 6 Strings filtered: 0 get_string calls: 194 DB reads/writes: 127/16 Load average: 11.58 Session: 2Ko Caches used (hits/misses/sets)core/string** static persist **: 142 / 52 / 0cachestore_file: 52 / 0 / 0core/plugintypes** static persist **: 68 / 3 / 0cachestore_file: 3 / 0 / 0core/databasemeta** static persist **: 13 / 3 / 0cachestore_file: 3 / 0 / 0core/yuimodulescachestore_file: 1 / 0 / 0core/pluginlist** static persist **: 1 / 1 / 0cachestore_file: 1 / 0 / 0Total: 284 / 59 / 0
This page is: General type: frontpage. Context Page d'accueil (context id 2). Page type site-index.

De quoi peut bien dépendre ce temps ?

  1. Thème graphique utilisé ?
  2. Nombre de menus supérieurs
  3. liens sur des images, des textes etc...
  4. format du cours (sauf page d'accueil)
  5. blocs latéraux...

Où et comment agir... simplement.

C'est un peu un mystère pour moi.

Merci d'avance.

Daniel

 

Moyenne des évaluations  -
En réponse à Daniel Méthot

Re: optimiser les temps de chargement

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Daniel "C'est un peu un mystère pour moi."

Je préconiserais d'appliquer cette solution :

"Puisque ces mystères me dépassent, feignons d'en être l'organisateur." Jean Cocteau, Les Mariés de la Tour Eiffel.

Joseph

En réponse à Joseph Rézeau

Re: optimiser les temps de chargement

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

Salut Joseph,

Alors on dira que si le temps de chargement est très long c'est justement pour permettre à tout un chacun(e) de boire un petit café...sourire

Nota: Le thème graphique standard donne des temps un peu plus courts... Pas probant...

Daniel

En réponse à Daniel Méthot

Re: optimiser les temps de chargement

par Didier Jodin,

La lenteur dans le chargement des pages est aussi (est devenu moins qu'avant) un problème chez moi.

Toutes les choses que tu proposes (1 à 5) permettent effectivement une accélération, avec un point commun cependant : c'est frustrant. Moins d'images, moins de blocs, moins de liberté dans les réglages de thème, moins de liberté dans le choix des formats de cours... Bref, se limiter à du basique.

A la question "où et comment agir... simplement", je répondrais donc : renoncer à ceci, renoncer à cela...

Mais quel serait l'intérêt de toutes les améliorations d'une version à l'autre de Moodle, s'il fallait se contenter d'un résultat semblable à M 1.8 ou M 1.9 ?

Donc, je réponds (modestement) à la question en ne tenant pas compte du "simplement".

Ce qui a grandement amélioré les choses chez moi, c'est de bricoler avec le cache "opcache" de php, c'est-à-dire celui qui est fortement conseillé depuis les dernières versions. Ça se joue dans le fichier "php.ini" : il faut donc y avoir accès. Certains hébergeurs, même en mutualisé, le permettent, et d'autres pas.

Il faut déjà l'activer, avec :

opcache.enable = On

On peut ensuite le configurer, en faisant semblant, comme le proposent Joseph et Cocteau, de maîtriser ce qu'on fait. Ma méthode, dans ce genre de situation, c'est de farfouiller dans des forums, de copier-coller bêtement des exemples, de voir si ça marche, d'enlever ou de modifier des trucs par-ci par-là, de voir si ça change quelque chose, etc.

Pour le moment, voici les lignes qui semblent satisfaisantes chez moi :

opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0

Mais tout cela dépend des caractéristiques de chaque serveur, bien entendu. La première ligne surtout, qui va dépendre de la mémoire disponible.

Un autre fichier de configuration semble important, c'est celui qui gouverne le comportement de MySql, et qui est nommé "my.inf". Pareil : je suis en train de tester infatigablement des bidules, des trucs et des machins...

Moyenne des évaluations Utile (3)
En réponse à Didier Jodin

Re: optimiser les temps de chargement

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

Effectivement, les systèmes de cache sont bien souvent ce qu'il y a de plus efficace.

Il y a quelques années, alors que nous venions d'installer Moodle 1.8, et subissions des ralentissements, le plus efficace fut la mise en place de eAccelerator (toujours en service depuis) !

Normalement, les informations sur ce genre de choses devraient se trouver dans la documentation liée aux performances de Moodle, et les pages liées...

En réponse à Séverin Terrier

Re: optimiser les temps de chargement

par Didier Jodin,

Il semble que "opcache" soit devenu le système que privilégie Moodle, et encore plus depuis M2.6 :

http://docs.moodle.org/26/en/OPcache

On trouve aussi sur cette page la configuration conseillée.

En réponse à Didier Jodin

Re: optimiser les temps de chargement

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

J'ai installé OPcache sur mon installation locale de XAMPP, mais je ne vois aucune accélération notable.

Joseph

En réponse à Joseph Rézeau

Re: optimiser les temps de chargement

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

Bonjour,

Quant à moi j'incline à penser (...Oui...) que les lenteurs que j'ai constatées dépendent un peu du nombre important d'objets situés sur mes pages d'accueil Moodle (que j'utilise directement comme des sites Web) et beaucoup de la charge des connexions chez mon hébergeur mutualisé qui doit sans doute être victime de son succès ?

J'envisage de lancer un fil "Enquête" sur ce point auprès des nombreux Moodleurs gérants des sites chez o2switch.

Daniel

PS: Opcache est peut être installé mais mes PF concernées sont en 2.5 et pas encore en 2.6

 

En réponse à Daniel Méthot

Re: optimiser les temps de chargement

par Didier Jodin,

L'enquête sera intéressante, mais je ne suis pas sûr que l'hébergeur soit en cause.

Jusqu'à récemment, j'étais chez Hostpapa (mutualisé), et la trop grande lenteur m'a convaincu de passer chez OVH (VPS, pour bricoler) : pas d'amélioration, malheureusement.

Ça fait un bon mois que j'essaye toutes sortes de configurations, sur toutes sortes de paramètres, en suivant toutes sortes de conseils donnés sur toutes sortes de forums, y compris bien sûr ceux de Moodle, et je tourne en rond. Ça reste beaucoup trop lent.

Je commence à suspecter que c'est Moodle lui-même, depuis 2.5 au moins, qui réclame trop de ressources.

En réponse à Didier Jodin

Re: optimiser les temps de chargement

par Sofiane LAMBERT,

Bonsoir,

Il faudrait peut être essayer sur un dédié car un VPS est juste un mutualisé avec plus de paramètres... Le processeur et la RAM sont partagés...après est-ce du SATA du SSD, etc. Il faut aussi faire attention à la bande passante. Après si en local il rame c'est peut-être l'ordi lui-même qui rame. En tout cas j'espère que ça va s'arranger et que ce n'est pas lié à Moodle. En local j'avais ma plateforme qui tournait bien et je quand je l'ai migrée chez OVH mutualisé, ça allait encore au début sauf le php.ini non modifiable. Après j'ai fais des test sur weboupro un genre de VPS et là c'était super lent. Maintenant je vais prendre un dédié chez SyS ou OVH selon leurs offres mardi ça devrait aller...

  • 4 cores / 8 threads x3.4 GHz
  • 32 Go DDR3 RAM
  • 2x2To RAID Soft (dommage)
  • 200 Mbps garantie
  • Réseau 1Gbps
  • 49TTC

J'espère que tout ira bien donc :D et n'avoir pas dit trop de bêtises!

Bonne soirée

 

En réponse à Sofiane LAMBERT

Re: optimiser les temps de chargement

par Didier Jodin,

Mais non, aucune bêtise...

Je suis bien d'accord : un VPS n'est qu'un mutualisé dont on peut modifier les paramètres comme si on était sur un dédié. C'est précisément pour cela que j'y ai mis les pieds... Tenter de trouver une réponse à la question : la lenteur est-elle due à une  configuration mal adaptée ? Après avoir essayé un peu tout et un peu n'importe quoi, je me dis que le problème n'est pas là. J'ai eu l'impression un moment que Opcache améliorait les choses, mais ça ne joue qu'à la marge. La lenteur générale persiste. Même avec une formule médiane de 2 vCores et 4 Go de RAM.

Un vrai dédié est sans doute la solution. Pour une institution, ça ne pose aucun problème. Pour des bricoleurs du dimanche comme moi, c'est moins accessible.

Et du coup, je songe sérieusement à revenir à M 1.9 !

En réponse à Didier Jodin

Re: optimiser les temps de chargement

par Sofiane LAMBERT,

les 2coeurs et la ram n'est que pour vous? sinon il y a aussi kimsufi (13.4 TTC)

Sinon il faudrait au niveau des mises à jour et possibilité d'amélioration de la génération des pages.

Par exemple :

Compresser le contenu

Apache 2.0 et 2.2 vous permettent de compresser le contenu avant de l’envoyer au navigateur du visiteur. Les contenus qui peuvent être compressés sont spécifiés par leur type MIME. Cette option nécessite que la fonctionnalité mod_deflate d’Apache soit opérationnelle.

eAccelerator comme dit plus haut ou alors http://sourceforge.net/projects/turck-mmcache/

En réponse à Didier Jodin

Re: optimiser les temps de chargement

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Didier "Et du coup, je songe sérieusement à revenir à M 1.9 !"

Ou alors, revenir à Socrate version 1.0 ?

Joseph

En réponse à Joseph Rézeau

Re: optimiser les temps de chargement

par Didier Jodin,

Disons que j'ai la nostalgie de l'époque où on pouvait se connecter à 30, simultanément et sur la même activité, sans que rien ne plante ni ne ralentisse.

Socrate, c'est déjà un moderne. Moi je milite pour la réhabilitation des présocratiques !

En réponse à Didier Jodin

Re: optimiser les temps de chargement

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Les présocratiques, version bêta (voire alpha) de Socrate 1.0 ?

En réponse à Joseph Rézeau

Re: optimiser les temps de chargement

par Didier Jodin,

Oui. Il y a toute une histoire de la philosophie à écrire sous cet angle-là.
Socrate comme version stable de Parménide, c'est un éclairage nouveau.

(Même si... pas si stable que ça Socrate. Un type qui passe son temps à bavarder dans des banquets, hmm... je voudrais pas dire mais moi je soupçonne quelques bugs.)

En réponse à Joseph Rézeau

Re: optimiser les temps de chargement

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

Bonjour,

On dialogue ... quotidiennement... avec mon hébergeur pour essayer d'améliorer la rapidité de mes accès.

Ayant constaté hier dimanche un temps de 1,2s pour charger ma page d'accueil, 10s ce lundi matin, mais jusqu'à 73s dans les cas limites, j'en concluais que cela était lié à un manque de bande passante lors de périodes chargées.

Bien entendu cela ne concerne que les accès vers o2switch.

Réponse de l'hébergeur :

"Si le problème venait de notre serveur, ça ferait un moment que j'aurai migré votre compte !
Vous avez des ressources dédiés / compte, quoiqu'il arrive sur le cluster. C'est quelque chose qu'il faut impérativement avoir en tête.
Tel un dédié, si vous avez des lenteurs, c'est que le quota de ressources (qui représente 95% d'un CPU physique) est dépassé.

Vous profitez d'ailleurs déjà d'un opcache d'actif, eaccelerator."

Il me semble qu'il me parle d'autre chose et ne répond pas exactement à ma question concernant la surcharge en bande passante de son serveur...?

Daniel

 

En réponse à Daniel Méthot

Re: optimiser les temps de chargement

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

Bonjour, 

Je reçois ceci de mon hébergeur:

A l'instant, gros pic de charge :

16645 elearnin 20 0 144m 22m 7264 R 81.0 0.3 19:02.50 /usr/local/cpanel/3rdparty/php/53/bin/php-cgi ./frontend/x3/softaculous/index.live.php
18457 elearnin 20 0 144m 22m 7264 D 34.2 0.3 7:50.80 /usr/local/cpanel/3rdparty/php/53/bin/php-cgi ./frontend/x3/softaculous/index.live.php
27945 elearnin 20 0 9240 1140 980 S 0.0 0.0 0:00.00 /bin/sh -c php-cli -f/home2/elearnin/public_html/moodle/admin/cli/cron.php>/dev/null 2>&1
27974 elearnin 20 0 324m 51m 9720 S 0.0 0.6 0:00.39 php-cli -f/home2/elearnin/public_html/moodle/admin/cli/cron.php
28217 elearnin 20 0 348m 76m 33m S 0.0 1.0 0:00.45 /usr/bin/php
29507 elearnin 20 0 9240 1136 976 S 0.0 0.0 0:00.00 /bin/sh -c php-cli -f/home2/elearnin/public_html/formations/admin/cli/cron.php>/dev/null 2>&1
29525 elearnin 20 0 329m 56m 9852 S 0.0 0.7 0:00.47 php-cli -f/home2/elearnin/public_html/formations/admin/cli/cron.php

Voila où il faut rechercher. Je pense.

J'y vois bien entendu entre autres choses des tâches cron mais tout ceci est un peu du chinois pour moi.

Y-a-t'il un traducteur dans la salle ?

Daniel

En réponse à Daniel Méthot

Re: optimiser les temps de chargement

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

Salut Daniel,

Manifestement, tu as 2 tâches cron, pour 2 plateformes différentes. J'espère que c'est bien le cas, et qu'elles utilisent chacune une base de données différente.

Je ne sais pas à quel délai tu lances chaque tâche cron, mais tu devrais en tout cas essayer de ne pas les lancer au même moment...

Et, de même, si tu as des opérations "lourdes", qui peuvent durer longtemps, il faut s'arranger pour que tout ne fonctionne pas en même temps, afin de "lisser" la charge du serveur.

Sur mon serveur, j'ai 5 instances qui tournent, pour lesquelles il faut limiter au maximum les opérations simultanées clin d’œil

D'autres "traducteurs" te donneront certainement d'autres informations utiles...

Séverin

En réponse à Séverin Terrier

Re: optimiser les temps de chargement

par Sofiane LAMBERT,

tu lances tes cron à partir d'où?

Serveur ou autres? Suivant le conseil de Séverin (je ne sais pas si c'est la solution) tu peux aussi lancer un depuis le serveur et l'autre depuis un autre service pour les générer à des moments différents notamment http://www.cronoo.com

En réponse à Sofiane LAMBERT

Re: optimiser les temps de chargement

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

Bonjour à tous,

Severin a dit : "Je ne sais pas à quel délai tu lances chaque tâche cron, mais tu devrais en tout cas essayer de ne pas les lancer au même moment..."

C'est un point que j'ai soigné depuis longtemps afin d'introduire un décalage.

Je vais revérifier cela et peut-être allonger mes délais de mes 5 crons qui sont (10-12-15-17-35mn).

Et changer les valeurs afin de ne jamais produire de chevauchement.

Je n'ai pas que des Moodle...

_________________________________________

En ce qui concerne ces crons je les lance depuis le serveur et non à partir d'un site externe comme Cronoo. J'utilise néanmoins Cronoo pour des cas particuliers ou comme conseil à certains clients qui ont des difficultés à programmer leur cron à partir de leur cPanel
A noter: Cronoo n'accepte plus à présent qu'un seul cron par utilisateur inscrit. C'est dommage ...!

________________________________________

Yslow, plugin très complet de Firefox donne des indications intéressantes, après analyse, sur ce qu'il faudrait faire pour améliorer le chargement des pages.

En particulier dans mon cas l'utilisation d'un Content Delivery Network.

J'ai essayé sur un CDN gratuit mais il est situé aux States et ne m'apporte que peu d'améliorations.

A ma connaissance pas de CDN libre et en tout cas pas installable en quatre clics avec Softaculous.

__________________________________________

Enfin l'activation,  de l'affichage des informations de performance en pied de page donne en particulier au début de la liste le temps de chargement de la page concernée.

perf

Chez moi ce matin ce n'est pas catastrophique par rapport à mon record négatif pour une page d'accueil: Tenez-vous bien... 71 secondes ! (en ADSL avec débit descendant de l'ordre de 10Mb/s)

Voici les résultats du test sur la page d'accueil. C'est le premier chiffre qui "me parle"... (15 s pour charger ma page). Beaucoup quand même...

15.310898 secs RAM: 51.4Mo RAM peak: 51.8Mo Included 811 files Contexts for which filters were loaded: 3 Filters created: 9 Pieces of content filtered: 8 Strings filtered: 0 get_string calls: 1265 DB reads/writes: 157/20 Load average: 5.00 Session: 6.1Ko Caches used (hits/misses/sets)core/string** static persist **: 1241 / 406 / 0cachestore_file: 406 / 0 / 0core/pluginlist** static persist **: 64 / 48 / 0cachestore_file: 4 / 44 / 44core/plugintypes** static persist **: 1150 / 1 / 0cachestore_file: 0 / 1 / 3core/databasemeta** static persist **: 15 / 3 / 0cachestore_file: 3 / 0 / 0core/yuimodulescachestore_file: 1 / 0 / 0core/repositories** static persist **: 0 / 10 / 0cachestore_static: 0 / 10 / 20core/plugininfo_base** static persist **: 1051 / 2 / 0cachestore_file: 0 / 2 / 383core/plugininfo_mod** static persist **: 108 / 1 / 0cachestore_file: 0 / 1 / 1core/plugininfo_block** static persist **: 68 / 1 / 0cachestore_file: 0 / 1 / 1core/plugininfo_filter** static persist **: 6 / 1 / 0cachestore_file: 0 / 1 / 1core/plugininfo_repository** static persist **: 20 / 1 / 0cachestore_file: 0 / 1 / 1Total: 4137 / 535 / 454

________________________________________

Merci pour vos conseils.

Daniel

En réponse à Daniel Méthot

Re: optimiser les temps de chargement - répartition de multiples cron

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

Daniel,

Je ne suis pas sur de comprendre ce que tu veux dire par "mes 5 crons qui sont (10-12-15-17-35mn)".

Ce sont des crons qui sont chacun liés à une instance Moodle, ou un autre produit ?

Et du coup, chacun est lancé une fois par heure, aux minutes indiquées ?

Il faut tenir compte de la durée d'exécution du cron, qui peut être parfois très courte, et parfois (bien) plus longue, suivant ce qui doit être effectué : 2/3 minutes de délai me parait un peu court...

Séverin

En réponse à Séverin Terrier

Re: optimiser les temps de chargement - répartition de multiples cron

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

@ Severin

  • 3 Moodle
  • 1 Owncloud
  • 1 Piwik
  • Et d'autres bricoles qui ne nécessitent pas de tâche cron.

Je pense allonger un peu les délais ?

Et vérifier qu'il n'y aie pas de chevauchements....

En réponse à Daniel Méthot

Re: optimiser les temps de chargement - répartition de multiples cron

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

Effectivement, il faut éviter au maximum les chevauchements... et donc, espacer les lancements de cron est généralement une bonne solution pour cela.

En réponse à Daniel Méthot

Re: optimiser les temps de chargement

par Gaël Mifsud,

Chez nous à Lille 1, sur un Moodle 2.4, nous avons eu des problèmes de lenteur il y a quelques temps qui ont été résolus après que nous ayons :

- ajouté de la RAM au serveur frontal web (8Go contre 4Go auparavant).

- Et aussi, désactivé le stockage des sessions en BDD !
http://docs.moodle.org/24/en/Session_handling

Depuis, Moodle répond beaucoup mieux et ne semble plus bloqué comme avant pendant de longues secondes.

En réponse à Gaël Mifsud

Re: optimiser les temps de chargement

par Didier Jodin,

La RAM semble effectivement déterminante.

Une chose qu'on peut désactiver aussi, c'est Ajax. Pour moi ce n'est pas vraiment frustrant, le glisser-déposer ne m'apportant rien. 

En réponse à Didier Jodin

Re: optimiser les temps de chargement

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

A propos d'Ajax, en tant que développeur, j'ai noté un problème. Lorsqu'il est activé et qu'un module comporte une erreur de programmation rouge Ajax peut empêcher l'affichage des messages d'erreur, même lorsqu'on est en mode DEBUG. Plus précisément, même s'il y a une erreur, Ajax continue sa tâche silencieusement, ce qui empêche de détecter l'erreur.

C'est pourquoi je recommande aux développeurs de systématiquement désactiver AJAX sur leur site de développement Moodle.

Joseph

Moyenne des évaluations Utile (1)
En réponse à Gaël Mifsud

Re: optimiser les temps de chargement

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

Bonjour,

Gaël a dit :"Et aussi, désactivé le stockage des sessions en BDD !"

Mais est-ce que cette désactivation n'empêche pas alors d'utiliser les divers plugins de suivi d'activité (temps passé) ?

Car j'utilise plusieurs de ces outils pour "traquer" mes petits paresseux...clin d’œil

Daniel

En réponse à Daniel Méthot

Re: optimiser les temps de chargement

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

Bonjour Daniel,

Si les informations de sessions ne sont pas stockées en base de données, elles le sont sous forme de fichiers sur le disque !

Et cela n'a normalement rien à voir avec le suivi d'activité...

Séverin