Submitted by drupalfrance on
Hello,
Je développe actuellement un site multilingue avec Drupal et le module i18n (http://drupal.org/project/i18n). Tout se passe nickel, à part que le site est d'une lenteur redoutable (jusqu'à une minute pour afficher une page), notamment quand on essaie de passer d'une langue à l'autre : ça rame, ça rame, et parfois même ça time out.
Je ne suis pas allé voir dans le code, mais c'est comme si Drupal recalculait tout (le cache par exemple ??) à chaque requête. Avez-vous une idée de pourquoi c'est si lent et de comment je pourrais débugger cette lenteur ? (devel ?)
Merci,
Vincent
PS. Le site est hébergé sur mon serveur, sur lequel il y a d'autres sites Drupal sans multilangue et ils vont bcp plus vite, le pb ne vient donc pas de l'hébergement.
Je ne connais pas bien i18n
Permalien Soumis par yched@drupal.org le 6 Février, 2007 - 18:29
Je ne connais pas bien i18n - juste assez pour savoir que c'est pas une partie de plaisir :-)
Je crois qu'à un moment il manquait un index sur la table locales_target - tu peux peut être verifier ça ? c'est la clef sur lid qui est cruciale...
OK, je vais regarder, merci
Permalien Soumis par drupalfrance le 7 Février, 2007 - 08:38
OK, je vais regarder, merci bcp.
Je crois pas que cela vienne
Permalien Soumis par Damien Tournoud le 7 Février, 2007 - 11:59
Je crois pas que cela vienne de là (les traductions inférieures à 75 caractères sont de toutes façons cachées).
Avec le module Devel tu devrais pouvoir débugger les requêtes SQL qui sont faites à chaque page. Peut être que tu trouveras un coupable. Je pencherais vers des interactions bizzares entre les modules (par exemple Views?).
C'est un site Drupal 5 ?
Non, c'est un site Drupal
Permalien Soumis par drupalfrance le 8 Février, 2007 - 00:43
Non, c'est un site Drupal 4.7.6.
Je posterai mes trouvailles avec Devel ici (s'il y en a).
UPDATE :
Permalien Soumis par drupalfrance le 25 Février, 2007 - 23:53
UPDATE :
Il semble que la lenteur vienne bien des traductions. Devel indique "Page execution time was 208622.12 ms", ça fait 208 secondes ça non ?? (soit plus de 3 minutes).
Le détail des requêtes montre que le grand coupable est le module "locale" avec des dizaines de requêtes du type "SELECT s.lid, t.translation FROM locales_source", certaines prenant jusqu'à plusieurs secondes. Pourtant il y a bien un index sur le champ lid.
Bref, c'est horrible. Je ne vois pas comment optimiser cette situation à part faire un site distinct par langue, ce que je déconseillais encore à qqn dans un post tout récent...
Si quelqu'un a une autre idée, je suis preneur.
Quelques réflexions à
Permalien Soumis par Zigazou le 27 Février, 2007 - 07:47
Quelques réflexions à chaud :
Pourtant il y a bien un
Permalien Soumis par Zigazou le 28 Février, 2007 - 19:44
Pourtant il y a bien un index sur le champ lid.
Dans l'optique d'accélérer rouen.fr, j'ai installé le module devel sur une version de test et ai constaté, qu'effectivement, les requêtes émises par locale sur les tables locales_sources et locale_target sont très lentes par rapport aux autres.
Par contre, comme la recherche se fait sur le champ source de locales_source, l'index sur lid ne sert à rien.
Essaie donc ce bout de SQL :
CREATE INDEX blobindex ON locales_source(source(24));
et dis-nous ce que ça donne chez toi. Il n'y a pas grand risque à exécuter la commande.
Si c'est bien la source du problème, je trouve bizarre que l'index ne soit pas mis en standard.
Zigazou, merci pour tes
Permalien Soumis par drupalfrance le 28 Février, 2007 - 20:19
Zigazou, merci pour tes conseils, tu m'ouvres des pistes auxquelles je n'avais pas pensé. Je vais regarder ça dès que j'ai un moment et je te tiendrai au courant.
Si c'est bien la source du
Permalien Soumis par Zigazou le 28 Février, 2007 - 20:34
Si c'est bien la source du problème, je trouve bizarre que l'index ne soit pas mis en standard.
Apparemment, c'était un oubli, l'index a été rajouté sur la version 5.0.
voir la requête sur le post : Drupal 5.0 sur free.fr.
Pour information, locales_source n'est pas utilisé uniquement sur les sites multilingues !
CREATE INDEX blobindex ON
Permalien Soumis par yched@drupal.org le 2 Mars, 2007 - 16:31
CREATE INDEX blobindex ON locales_source(source(24));
C'est carrément ça qu'il fallait faire :-)
Je viens de dépanner un ami qui a un site 4.7 multilingue
afficher le formulaire d'édition d'une view prenait genre 15 secondes...
En fait j'avais vu passer le thread sur drupal.org et l'"oubli" dans la version 4.7. J'avais même fait la modif sur un site précédent il y a qques mois, puis complètement oublié...
Merci Zigazou !