Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Site multilingue super lent

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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.

Version de Drupal : 

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...

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 ?

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 à chaud :

  • As-tu essayé d'extraire cette même requête de Drupal pour la tester dans un PHPMyAdmin ?
  • Pourrais-tu poster la requête fautive qu'on y jette un oeil ?
  • As-tu essayé des "REPAIR TABLE tbl_name;" sur les tables incriminées ?

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.

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 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 !