Déboguer les lenteurs d'un site WordPress avec Query Monitor

Procédure

Qu'est-ce que Query Monitor ?

WordPress, le CMS le plus populaire, est très fréquemment sujet à des problèmes de performance. Cependant, ce CMS ne fournit pas d'outil natif pour analyser les goulots d'étranglements à l'origine des lenteurs, ce qui ne facilite pas les analyses.

Query Monitor est un plugin WordPress gratuit qui apporte les outils de profilages nécessaires lors de l'exécution de chaque page généré par WordPress pour identifier les points à vérifier lors d'un problème de vitesse et de performance.

Si la méthode habituelle est de tâtonner la désactivation de chaque plugin jusqu'à ce que le problème disparaît, Query Monitor apporte une nouvelle approche en identifiant immédiatement le plugin et/ou le thème à l'origine d'une requête SQL ou requête HTTP lente.

Dans ce guide, vous allez apprendre tout ce que vous devez savoir pour identifier vos problèmes de performances avec Query Monitor.

Comment installer Query Monitor ?

Pour installer Query Monitor, rendez-vous sur le tableau de bord de votre site WordPress et rendez-vous sur Extensions puis Ajouter.

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Recherchez le plugin Query Monitor et installez-le.

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Une fois installé, activez l'extension.

Déboguer les lenteurs d'un site WordPress avec Query Monitor

L'interface de Query Monitor

Dès que le plugin est actif, un nouveau menu s'affiche sur la barre de menu WordPress. En cliquant sur le menu, la fenêtre de débogage s'affiche :

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Il vous sera alors nécessaire de vous rendre sur la page où vous constatez des problèmes de performances et cliquer sur le menu pour voir les détails.

N'oubliez pas de désactiver le plugin Query Monitor dès que vous avez fini de déboguer, car la génération de ces données de débogage est lui-même assez lourde et peut engendrer des problèmes de performances.

Menu Vue d'ensemble

Le menu vue d'ensemble de Query Monitor indique l'URL actuellement ouverte.

Le temps de génération de la page est le temps sur laquelle PHP exécute le script. La limite, mentionnée en dessous est le max_execution_time défini sur PHP. En général, le temps de génération de la page doit être approximativement similaire au temps d'attente du navigateur (visible depuis le console développeur) :

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Dans la présente exemple, vous constatez qu'il y a un problème : le temps de génération de la page n'est que de 377 ms, or le navigateur prend jusqu'à 959 ms avant de pouvoir recevoir la page. Ce problème survient quand le réseau entre le navigateur web et le serveur du site est lente. Dans ce genre de cas, il sera nécessaire de mettre en place un serveur plus proche du client grâce à Ipxchange ou Cloudflare.

La section "Pic d'utilisation mémoire" indique la consommation mémoire maximale de votre site web lors de la génération de la page. La limite WordPress est définie par la constante WP_MEMORY_LIMIT dans wp-config.php, tandis que la limite du serveur est définie par la valeur de memory_limit défini depuis l'interface cPanel.

La section suivante, "Requêtes en base de données", indique le temps dépensé pour récupérer des informations depuis la base de données.

La section "Appels d'API HTTP" indique les requêtes HTTP effectués par le site lors de la génération de la page pour accéder à des API externes. Le temps de réponse d'une API dépendra inévitablement du serveur sur lequel cet API est hébergé.

Les deux derniers sections, "Cache objet" et "Cache d'Opcode" indiquent l'état d'utilisation de ces deux caches. A rappeler que le cache objet stocke les objets WordPress en mémoire pour réduire le nombre de requêtes MySQL effectués sur la base de données et ainsi optimiser le temps de réponse, tandis que le cache Opcode permet à PHP de ne pas recompiler à chaque fois le fichier PHP. Une fois un fichier PHP exécuté pour la première fois, le cache Opcode stocke l'Opcode de ce fichier PHP (la version compilée donc binaire du fichier PHP) pour une future exécution.

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Si vous souhaitez en savoir plus sur les enjeux du cache objet, nous vous conseillons de consulter notre documentation dédié à la mise en place d'un cache objet persistant avec Redis.

Menu Erreurs PHP

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Ce menu vous affiche les erreurs PHP rencontrés par WordPress (pas forcément une erreur fatale et/ou bloquante). Elles sont souvent masqués et difficile à retrouver sans modifier les seuils de reporting d'erreur PHP. Query Monitor permet toutefois de les visualiser rapidement sans modifier aucune configuration. La colonne "Composant" vous indique la provenance du script à l'origine de l'erreur, si cela vient du coeur de WordPress, d'un thème ou d'un plugin en particulier. La colonne "Emplacement" indique le fichier et le numéro de ligne s'y afférant.

Si vous rencontrez des erreurs PHP, même si ceux-ci ne sont pas bloquantes, votre performance pourrait en être affecté. Rien que si vous avez beaucoup d'erreurs à loguer, votre processus PHP devra ouvrir, écrire et fermer le fichier de log PHP à chaque nouvelle visite. Si vous avez des dépréciations, ajustez les seuils de reporting d'erreur PHP pour que ceux-ci ne soient pas incluses dans les fichiers logs pour éviter des écritures inutiles sur le fichier log PHP, si vous ne pouvez pas, pour l'instant, les résoudre convenablement.

Menu Requêtes

Ce menu regroupe les requêtes SQL effectués par WordPress ainsi que les composants à l'origine des requêtes et leur temps d'exécution :

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Si vous constatez des requêtes particulièrement lentes :

  • Essayez de désactiver le plugin à l'origine de la requête si elle ne présente aucune fonctionnalité vitale à votre site web (tel qu'un plugin de statistiques, par exemple) ou changez de thème si la requête provient d'un thème mal conçu.
  • Si la requête cible une table que vous pouvez nettoyer, n'hésitez pas à procéder au nettoyage pour que sa taille soit réduite et ainsi la recherche de données par dessus soit plus fluide. Par exemple, vous pouvez supprimer les révisions d'articles sur wp_posts pour alléger cette table, ou supprimer les transients expirés sur wp_options.
  • Si la requête résulte d'une demande d'objet WordPress (tel qu'un Custom Post Type), vous pouvez réduire l'exécution de ces types de requêtes en mettant en place un cache d'objet.
  • Vous pouvez tout simplement migrer vers une offre plus puissante tel qu'un VPS PRO si vous souhaitez disposer d'un serveur MySQL plus puissante et qui pourra, en conséquence, exécuter la même requête sur le même set de données avec une vitesse plus rapide.

Menu "Appels d'API HTTP"

Le menu "Appels d'API HTTP", un peu plus bas dans la liste, permet de visualiser les requêtes API effectués par le site durant le chargement de la page :

Déboguer les lenteurs d'un site WordPress avec Query Monitor

Si vous constatez une API qui répond trop lentement, nous vous recommandons de le désactiver en désactivant le plugin associé.

Si toutefois la durée est approximativement arrondie (tel que 30,001s par exemple), ceci pourrait dire que la requête API dépasse un temps d'exécution limite, et ce souvent à cause d'un blocage par pare-feu. Si l'API accède à une ressource qui n'est pas sur le port 80 ou 443 standard, n'oubliez pas de vérifier que la requête est bien autorisé sur le pare-feu du serveur cPanel.

Conclusion

Maintenant, vous savez comment utiliser le plugin gratuit Query Monitor pour identifier l'origine de vos problèmes de lenteurs sur votre site web WordPress. N'hésitez pas à donner vos avis et partager vos questions en commentaire.

Notez cet article

5 / 5
1 avis


Vous avez noté 0 étoile(s)

Cet article vous a-t-il été utile ?

Merci !

N'hésitez pas à commenter nos pages afin de nous aider à les améliorer si besoin.

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.






Pour toutes questions non liées à cette documentation ou problèmes techniques sur l'un de vos services, cliquez ici si vous souhaitez contacter le support commercial ou le support technique