[Résolu] Erreur MySQL : Site très lent voire erreur 503 pendant plusieurs heures
Ce sujet est résolu. Voici une description du problème et de la solution.
Problème : Le client a signalé des problèmes de lenteur et des erreurs 503 sur son site WordPress lors de l'utilisation de WPML sur un hébergement partagé. Le problème disparaissait lors de la désactivation de WPML et réapparaissait lors de sa réactivation. La base de données était très volumineuse pour un hébergement partagé. Solution : Nous avons suggéré plusieurs étapes pour améliorer les performances : 1. Mise à jour de WordPress et de WPML ainsi que tous les add-ons de WPML. 2. Désactivation de WPML Media si la traduction d'images différentes par langue n'est pas nécessaire. 3. Changement du moteur de stockage des tables de la base de données de MyISAM à innoDB pour améliorer les performances. Voici les requêtes SQL pour effectuer ce changement :
SET sql_mode = '';
ALTER TABLE wpbtk_posts ENGINE = INNODB;
ALTER TABLE wpbtk_postmeta ENGINE = INNODB;
ALTER TABLE wpbtk_icl_strings ENGINE = INNODB;
ALTER TABLE wpbtk_icl_string_packages ENGINE = INNODB;
ALTER TABLE wpbtk_icl_string_translations ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translate ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translate_job ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translations ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translation_batches ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translation_status ENGINE = INNODB;
ALTER TABLE wpbtk_icl_background_task ENGINE = INNODB;
ALTER TABLE wpbtk_icl_flags ENGINE = INNODB;
ALTER TABLE wpbtk_icl_languages ENGINE = INNODB;
ALTER TABLE wpbtk_icl_languages_translations ENGINE = INNODB;
ALTER TABLE wpbtk_icl_locale_map ENGINE = INNODB;
ALTER TABLE wpbtk_icl_message_status ENGINE = INNODB;
ALTER TABLE wpbtk_icl_mo_files_domains ENGINE = INNODB;
ALTER TABLE wpbtk_icl_node ENGINE = INNODB;
ALTER TABLE wpbtk_icl_reminders ENGINE = INNODB;
ALTER TABLE wpbtk_icl_string_batches ENGINE = INNODB;
Ces modifications ont permis de réduire significativement le temps de chargement des pages. Nous recommandons de changer toutes les tables en innoDB pour de meilleurs résultats.
Si vous rencontrez toujours des problèmes après avoir suivi ces étapes, ou si cette solution ne semble pas pertinente à votre cas, nous vous invitons à ouvrir un nouveau ticket de support. Nous vous recommandons également de consulter la page des problèmes connus, de vérifier la version de la correction permanente et de vous assurer que vous avez installé les dernières versions des thèmes et plugins. Pour toute assistance supplémentaire, veuillez contacter notre forum de support.
Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.
Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.
Les langues: Anglais (English )Français (Français )
Fuseau horaire: America/Lima (GMT-05:00)
Bonjour,
J'ai de bonnes nouvelles, je vous partage le feedback reçu:
La base de données compte environ 574 000 lignes et 1,2 Go, <strongce qui est énorme pour l'hébergement partagé.
Je n'ai pas pu reproduire le problème en local. Je crois que les facteurs externes affectant les performances du serveur MySQL ne sont pas exactement liés aux requêtes SQL.
Après avoir lu quelques ressources Internet que j'ai trouvées sur l'hébergement partagé, lorsqu'une requête prend plus de temps que d'habitude, le serveur met fin à la connexion pour économiser les ressources. Cela pourrait poser un problème.
Cependant, j'ai quelques suggestions qui semblent améliorer les performances et je pense qu'elles devraient résoudre le problème.
- Les statistiques initiales avant d'apporter des modifications sont de 695 requêtes (Q) en 5,36 secondes (s).
- J'ai mis à jour WP et WPML + tous les add-ons de WPML: 692Q en 5,01s
- J'ai désactivé WPML Media car il n'est nécessaire que pour traduire différentes images par langue: 692Q 4,19s
- J'ai trouvé que la plupart des tables utilisent le moteur MyISAM qui est un peu lent. Les changer en innoDB améliore les performances.
Voici les requêtes faites sur la base de données pour les changer:
SET sql_mode = '';
ALTER TABLE wpbtk_posts ENGINE = INNODB;
ALTER TABLE wpbtk_postmeta ENGINE = INNODB;
ALTER TABLE wpbtk_icl_strings ENGINE = INNODB;
ALTER TABLE wpbtk_icl_string_packages ENGINE = INNODB;
ALTER TABLE wpbtk_icl_string_translations ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translate ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translate_job ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translations ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translation_batches ENGINE = INNODB;
ALTER TABLE wpbtk_icl_translation_status ENGINE = INNODB;
ALTER TABLE wpbtk_icl_background_task ENGINE = INNODB;
ALTER TABLE wpbtk_icl_flags ENGINE = INNODB;
ALTER TABLE wpbtk_icl_languages ENGINE = INNODB;
ALTER TABLE wpbtk_icl_languages_translations ENGINE = INNODB;
ALTER TABLE wpbtk_icl_locale_map ENGINE = INNODB;
ALTER TABLE wpbtk_icl_message_status ENGINE = INNODB;
ALTER TABLE wpbtk_icl_mo_files_domains ENGINE = INNODB;
ALTER TABLE wpbtk_icl_node ENGINE = INNODB;
ALTER TABLE wpbtk_icl_reminders ENGINE = INNODB;
ALTER TABLE wpbtk_icl_string_batches ENGINE = INNODB;
Après cela nous obtenons 699Q 1.91s!
Notez que nous avons changé seulement les tables les plus importantes et celles liées à WPML à innoDB. Je vous recommande de changer toutes les tables à innoDB car les résultats sont impressionnants (plus de 2 secondes de différence).
Cette amélioration de performance devrait sans doute résoudre le problème sur votre serveur partagé. Mais si le problème persiste, nous suggérons de changer de serveur.
Ouah très bonne nouvelle en effet ! Merci beaucoup pour cette solution claire et détaillée !
Je viens d'effectuer toutes les étapes, et j'ai changé toutes les tables avec le moteur innoDB.
Juste une question : est-ce qu'il est préférable que je ne réactive jamais WPML Media ?
Je vais surveiller ce que ces changements donnent dans les prochains jours et je vous tiens au courant.
Merci encore pour le temps passé sur mon problème !
Mon collègue Nicolas est en congé, je vais donc m'occuper de votre demande,
En ce qui concerne le plugin de traduction des médias, si vous ne souhaitez pas de traduire vos fichiers médias, comme par exemple d'avoir des images différentes par langue, il n'est pas nécessaire qu'il soit actif sur votre site,
Je continue d'observer si les changements effectués ont résolu mon problème, je vous tiens au courant dans les prochains jours quand j'aurai un peu plus de recul.
J'ai attendu un peu pour vous répondre histoire d'avoir un peu plus de recul sur les conséquences des changements appliqués.
Depuis l'implémentation de la solution proposée, j'ai eu de nouvelles erreurs qu'une seule fois, et seulement 31 occurrences. J'ai donc l'impression que passer toutes les bases en moteur innoDB a bien aidé.
J'ai constaté par moi-même qu'il y a encore des erreurs 503 de temps en temps, mais le problème ne dure pas.
Je pense toutefois que ce problème a permis de montrer les limites de l'hébergement mutualisé avec mon site et je pense que je vais quand même envisager une migration vers un hébergement dédié à moyen terme, histoire de régler le problème vraiment à 100% et améliorer les performances de mon site en général.
En tous cas merci énormément à vous et à toute l'équipe pour votre aide et tout le temps passé sur mon problème.