New Relic APM est un outil puissant qui pénètre dans les rouages internes d’un site web WordPress pour identifier les extensions, les fichiers de modèle de thème, les requêtes de base de données, les appels externes ou les erreurs de codage qui causent des problèmes de performance sur vos sites web.

Chez Kinsta, nos clients sont libres d’ajouter leur propre licence New Relic afin qu’ils puissent profiter de la puissante visibilité offerte par cet outil.

Si votre hébergeur ne propose pas l’intégration de New Relic, vous pouvez le configurer vous-même si votre site est hébergé dans un environnement privé autogéré.

Cependant, la mise en route de New Relic n’est qu’un début. Si vous n’avez jamais utilisé New Relic APM (et peut-être même si vous l’avez fait), vous aurez peut-être du mal à tirer le meilleur parti de ce puissant outil. Dans ce tutoriel, nous vous montrerons comment utiliser New Relic APM pour diagnostiquer et corriger les problèmes de performance sur votre site WordPress.

Prêt à devenir intello ? Allons-y !

Un bref aperçu de New Relic APM

Screenshot of the New Relic APM homepage.
New Relic APM

Alors, qu’est-ce que New Relic APM ? Pour nos besoins, la définition suivante correspond :

New Relic APM est une application web qui fournit des informations détaillées sur les performances de votre site WordPress.

Vous installez New Relic en ajoutant une extension à PHP. Cette extension écoute chaque requête traitée par PHP et renvoie cette information au tableau de bord de New Relic. New Relic organise ensuite cette information en une série de tableaux et de graphiques que vous pouvez utiliser pour diagnostiquer le problème de performance de votre site Web. Il est important de noter que New Relic n’est pas supporté sur HHVM.

Faisons un rapide tour d’horizon des principales visualisations de données de New Relic.

Vue d’ensemble

Vue d'ensemble de New Relic APM
Vue d’ensemble de New Relic APM

Cela donne un aperçu rapide de la performance globale de votre site Web. Vous ne diagnostiquerez pas de problèmes spécifiques à partir de cet écran, mais la compilation pratique montrant comment PHP, MySQL et les appels externes fonctionnent ensemble peut vous orienter dans la bonne direction.

En savoir plus sur la page de présentation d’APM.

Transactions

Onglet transactions New Relic
Onglet transactions New Relic

L’onglet Transactions est l’onglet le plus utile dans New Relic.

Apprenez à aimer l’onglet des transactions et vous serez en mesure d’explorer les transactions lentes pour identifier les appels de base de données, les ressources externes ou les goulots d’étranglement de code qui ralentissent votre site. La liste des transactions lentes présente un intérêt particulier dans la vue des transactions. Pour voir la liste, faites défiler vers le bas de l’onglet des transactions et regardez dans la partie inférieure droite de la page.

Traces de transactions dans New Relic
Traces de transactions dans New Relic

Vous trouverez ici une liste des transactions les plus lentes capturées par New Relic. Nous ne passerons pas plus de temps sur cette section pour l’instant, mais un peu plus tard, nous vous expliquerons comment utiliser cette section pour diagnostiquer les problèmes de votre site Web.

En savoir plus sur la page des transactions de New Relic APM.

Hooks WordPress

Hooks WordPress
Hooks WordPress

L’onglet Hooks WordPress permet de visualiser le temps passé par toutes les fonctions PHP déclenchées par les crochets d’action WordPress. Cette information peut être utile aux développeurs expérimentés qui peuvent utiliser l’information pour travailler en arrière à partir d’un hook surchargé afin d’identifier les fonctions qui sont activées par le hook.

Plugins et thèmes WordPress

Plugins et thèmes WordPress
Plugins et thèmes WordPress

L’onglet Plugins et thèmes WordPress vous montre combien de temps de traitement PHP les plugins et le thème actif consomment. Si un seul plugin ou le thème de votre site prend beaucoup trop de temps, cette page peut vous aider à repérer rapidement le plugin ou le thème qui cause le problème.

Une mise en garde s’impose : L’onglet Plugins et thèmes de WordPress dans New Relic est le plus facile à utiliser.

Lorsque vous enquêtez sur un problème de performance d’un site Web, il peut être tentant de vérifier cet onglet par défaut et de désactiver simplement le plugin le plus long et le plus lent. Cependant, faire cela, c’est ignorer l’information précieuse que l’on trouve ailleurs dans New Relic. C’est un peu comme si on traitait les symptômes plutôt que de creuser et de trouver la cause profonde.

Les plugins peuvent fonctionner lentement en raison d’un problème de mauvaise configuration, tel qu’un plugin de gestion des membres fonctionnant lentement en raison de l’utilisation d’un numéro de port SMTP incorrect. Ou un plugin n’a peut-être pas été désinstallé correctement. C’est le genre d’information que vous pourriez probablement obtenir en fouillant dans une transaction lente dans l’onglet des transactions, et vous ne pourrez jamais corriger cela en désactivant simplement le plugin le plus lent comme rapporté par New Relic.

Mettez-vous donc à l’aise avec cet onglet, mais pas à l’exclusion du reste de l’information fournie par New Relic.

Bases de données

Vue d'ensemble de New Relic MySQL
Vue d’ensemble de New Relic MySQL

L’onglet bases de données vous permet d’identifier les tables de la base de données et les types de requêtes les plus consommatrices en temps. New Relic relie ces informations aux transactions qui font ces requêtes. Vous pouvez utiliser ces informations pour identifier les tables de la base de données qui peuvent nécessiter une optimisation et les fichiers modèles qui imposent une charge trop importante à la base de données.

Services externes

Services externes New Relic
Services externes New Relic

La plupart des sites Web WordPress s’appuient sur un certain nombre de services externes :

  • Les mises à jour des plugins, des thèmes et du noyau sont fournies par wordpress.org ainsi que par les développeurs de plugins et de thèmes.
  • De nombreux plugins s’intègrent à des API tierces, comme le plugin d’optimisation d’image Smush de WPMU DEV (smushpro.wpmudev.org).
  • Les plugins de chat sont généralement alimentés par des services externes.
  • De nombreux sites sont intégrés à des plateformes de médias sociaux pour une présentation et des performances optimales lorsque le contenu est partagé sur ces réseaux.

Lorsque l’un de ces services externes cesse de répondre en temps opportun, il peut paralyser l’ensemble de votre site Web.

L’onglet Services externes vous permet de voir rapidement quels services externes consomment le plus de temps. Vous pouvez ensuite utiliser cette information pour déterminer s’il s’agit d’un problème de vitesse (le service répond lentement) ou de quantité (il y a trop d’appels à la source externe) et travailler à résoudre le problème.

Analyse des erreurs

Analyse d'erreur dans New Relic
Analyse d’erreur dans New Relic

L’onglet d’analyse des erreurs indique les erreurs PHP rencontrées lors du chargement de votre site WordPress. Les erreurs sont regroupées en classes, ce qui vous permet de voir rapidement combien de types d’erreurs différents sont générés. Les erreurs sont également liées aux transactions réelles qui ont généré les erreurs. Si vous sélectionnez une erreur spécifique, vous pouvez également voir une trace de pile complète pour la transaction qui a généré l’erreur.

Considérez l’analyse des erreurs comme un log des erreurs PHP mieux organisé. Il peut s’avérer inestimable lorsque l’on essaie de retracer les fichiers générant des erreurs PHP et les transactions dans lesquelles ces erreurs se produisent.

Débogage des pages à chargement lent

Le problème le plus courant pour lequel notre équipe utilise New Relic pour déboguer est le cas d’une page ou d’un processus spécifique qui prend un temps de chargement exceptionnellement long. Lorsque cela se produit, l’onglet Transactions dans New Relic APM est presque certainement le premier endroit à consulter.

Le processus que vous devrez suivre pour diagnostiquer une page à chargement lent est assez simple :

  1. Reproduisez la transaction lente.
  2. Retrouvez la transaction dans la liste des transactions lentes dans New Relic.
  3. Examinez le sommaire de la transaction et retracez les détails pour déterminer la cause de la lenteur.

Regardons un exemple de ceci et comment New Relic peut être utilisé pour diagnostiquer le problème.

Étape 1 : Reproduire la transaction

Prenons un exemple. Dans cet exemple, notre client voit un chargement lent à chaque fois qu’un article de blog est chargé. Toutes les autres pages se chargent normalement, mais les articles individuels prennent plusieurs secondes à charger.

La première étape consiste donc à reproduire le problème. Dans ce cas, cela signifie visiter un seul article de blog plusieurs fois pour s’assurer que New Relic capture la date nécessaire.

Note : Si votre site utilise la mise en cache des pages, qui est intégrée à notre plateforme ici à Kinsta, vous devrez vider le cache entre chaque chargement de page. Sinon, vous finirez par charger la page à partir du cache plutôt que de laisser WordPress générer la page.

Étape 2 : Trouver la transaction lente

Une fois que vous avez reproduit la transaction lente plusieurs fois, allez dans New Relic et sélectionnez l’onglet Transactions. Faites ensuite défiler vers le bas jusqu’à ce que vous voyiez la liste des transactions lentes dans la partie inférieure droite du tableau de bord New Relic.

La lenteur des transactions dans New Relic
La lenteur des transactions dans New Relic

Cliquez sur la transaction que vous déboguez pour voir les détails.

Étape 3 : Examiner le résumé de la transaction et les détails de la localisation

Une fois la transaction sélectionnée, un résumé de la transaction s’affiche.

Résumé de la transaction lente
Résumé de la transaction lente

Le résumé vous permet de voir un aperçu instantané des composantes qui ont contribué au temps de traitement de la transaction. Dans le cas de notre exemple de transaction, un appel à une ressource externe, www.googleapis.com, est responsable de 5 000 millisecondes d’une transaction qui a duré au total 5 350 millisecondes.

Bien que cette information soit utile, l’onglet Détails du tracé nous fournira les détails dont nous avons besoin pour voir exactement ce qui se passe.

Traçabilité des transactions lentes
Traçabilité des transactions lentes

L’onglet Détails de la trace fournit une cascade hiérarchique étape par étape montrant la fonction, les requêtes de base de données et les appels externes que PHP effectue au fur et à mesure qu’il génère la page.

Dans le cas de notre exemple de transaction, les détails de la trace révèlent qu’un appel vers une URL Google Analytics est ce qui retarde le processus. Si nous travaillons à partir de cette requête, une fonction PHP nommée gapp_get_post_pageviews est lancée. Une recherche rapide sur Google pour cette transaction révèle qu’elle fait partie du plugin Google Analytics Post Pageviews. Ce plugin est installé sur le site et permet d’ajouter un compteur de vues à une barre d’en-tête fixe.

New Relic vient de nous permettre d’isoler le compteur de vues dans la barre d’en-tête fixe comme le composant principal contribuant à la lenteur du chargement des articles de blog sur le site en question. Maintenant, le propriétaire de ce site sait exactement quel composant cibler pour tenter de résoudre le problème de lenteur de chargement des articles de blog individuels.

Correction de la lenteur globale

Le deuxième type de problème le plus courant que nous dépannons pour nos clients est une plainte que l’ensemble du site se charge lentement. Lorsque chaque transaction prend beaucoup de temps à charger, l’une des trois choses suivantes se produit probablement :

  • Le site manque de ressources serveur.
  • Un plugin ou le thème actif cause des problèmes.
  • La base de données du site a du mal à suivre le rythme des requêtes.

Chez Kinsta, les problèmes de ressources de serveur sont rares, car nos machines virtuelles évolutives sont capables de gérer des quantités variables de charge. Cependant, si le site manque de CPU ou de RAM, cela peut causer une lenteur générale que New Relic n’épinglera pas sur une seule ressource. Donc, si vous constatez une lenteur générale et que New Relic indique que chaque partie du site y contribue, vérifiez la charge sur votre serveur pour voir si une pénurie de ressources serveur est à blâmer.

Si votre site a accès à de nombreuses ressources serveur, l’endroit suivant que vous devrez vérifier pour diagnostiquer la lenteur générale inclut les onglets Plugins et thèmes WordPress, Services externes et Bases de données.

Voici des exemples de lenteur générale qui peuvent être diagnostiqués à l’aide de chacun de ces onglets.

Lenteur globale causée par un plugin

Lorsqu’un plugin cause une lenteur générale, les symptômes varient en fonction de l’activité du plugin. Cependant, dans de nombreux cas, vous constaterez qu’un plugin lent affectera chaque page d’un site WordPress. Dans le cas du site dont vous voyez les données dans l’image ci-dessous, la lenteur générale a été observée sur chaque page du site.

Voici ce que New Relic avait à dire sur la performance des plugins du site.

Plugins WordPress
Plugins WordPress

Immédiatement vous pouvez voir que le plugin adinjector consomme plus de 15 fois plus de temps que le plugin le plus lent suivant.

Quand vous voyez des données de ce type, il peut être tentant de rejeter immédiatement le plugin comme étant mal codé ou d’une manière ou d’une autre inefficace. Bien que ce soit parfois le cas, ce n’est pas toujours le cas. Une mauvaise configuration des plugins, la lenteur de la base de données ou des ressources externes lentes à réagir peuvent entraîner une perte de temps considérable pour un plugin.

Donc quand vous voyez un plugin qui répond lentement, c’est une bonne idée de vérifier plusieurs autres écrans dans New Relic pour trouver des informations supplémentaires. Les transactions, les bases de données et les ressources externes doivent toutes être vérifiées avant de décider que la désactivation du plugin est la meilleure ou la seule façon de progresser.

Lenteur globale causée par les services externes

Si un site dépend d’un appel à un service externe afin de générer des pages vues, et que ce service cesse de répondre ou prend beaucoup de temps à répondre, le résultat peut être un site Web WordPress qui cesse complètement de se charger.

Top 5 des services externes
Top 5 des services externes

L’image ci-dessus provient du même site qui a produit la capture d’écran des plugins lents ci-dessus. Comme vous pouvez le constater, il n’y a qu’un seul service externe qui montre un montant exorbitant du temps total passé à attendre des services externes.

Ce cas montre pourquoi il est nécessaire de combiner les informations avant d’arriver à une conclusion. Le service appelé dans ce cas est le développeur du plugin identifié à la dernière étape.

Cette information ajoute une certaine nuance à la situation. Ce n’est pas le code du plugin qui pose problème, par exemple. Au lieu de cela, il semble que le plugin fait beaucoup d’appels vers le site Web du développeur et ces appels, considérés en combinaison, prennent beaucoup de temps de traitement.

Si nous allons plus loin et regardons une transaction lente pour ce site, nous pouvons voir que cet appel externe semble vérifier l’état de la licence du plugin en question, ce qui suggère que la licence pour ce plugin particulier a peut-être expiré.

Quoi qu’il en soit, nous sommes maintenant en mesure d’informer le propriétaire de ce site que le plugin adinjector est à l’origine de la lenteur des performances, et cette lenteur est due aux appels répétés sur le site Web du développeur pour vérifier l’état de la licence du plugin.

Lenteur globale causée par une base de données submergée

Une base de données mal optimisée peut entraîner une lenteur générale sur un site WordPress.  Une optimisation que nous recommandons toujours est de convertir votre base de données de MyISAM à InnoDB. Dans New Relic, cette lenteur liée à la base de données apparaîtra très probablement à deux endroits :

  • Tout d’abord, vous verrez une quantité démesurée d’activité MySQL dans l’aperçu.
  • Deuxièmement, vous verrez une ou plusieurs tables de base de données qui consomment beaucoup de temps dans l’onglet bases de données.

En commençant par l’écran de synthèse, un site avec une base de données en difficulté pourrait ressembler à ceci :

L'heure des transactions Web
L’heure des transactions Web

Pour avoir une meilleure idée de la table de base de données ou de la requête à l’origine du problème, allez à l’onglet des bases de données.

Présentation de MySQL
Présentation de MySQL

L’onglet Bases de données indique la table et le type de requête qui consomme le plus de temps. Si vous sélectionnez l’une des entrées de la liste, vous pouvez voir plus de détails, y compris des exemples de requêtes.

Requête lente - table wp_options
Requête lente – table wp_options

Dans ce cas, les données pointent du doigt les données chargées automatiquement dans la table wp_options. Bien sûr, une analyse rapide de la table wp_options confirme que près de 250 Mo de données sont chargées automatiquement à partir de cette table, faisant de ce site un candidat évident pour la maintenance et l’optimisation de bases de données. Consultez notre article plus détaillé sur la façon d’optimiser votre table wp_options et les données chargées automatiquement.

Maintenant, le débogage !

Une fois que vous savez comment l’utiliser, New Relic peut être un outil précieux pour identifier les problèmes de PHP performance sur votre site WordPress. Pour tirer le meilleur parti de New Relic, il est essentiel que vous connaissiez WordPress, que vous compreniez les informations que chaque onglet rapporte et que vous sachiez comment toutes les informations sont liées entre elles.

Nous avons une autre étude de cas intéressante sur le sujet, n’hésitez pas à y jeter un coup d’œil : Débogage des problèmes de performance de WordPress – Liste de contrôle des choses qui se produisent

Avez-vous des conseils pour New Relic sur WordPress ? Nous aimerions les entendre ci-dessous dans les commentaires.

Jon Penland

Jon is the Chief Operating Officer at Kinsta and is involved with Kinsta's sales, customer service, and technical support teams on a daily basis. Jon's a family man. So when he isn't feverishly tapping the keys of his laptop he's usually helping one of his kids fix a bike or setting up Netflix for an impatient preschooler.