• 15 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 8/25/20

Analysez un profil

Le framework Symfony est outillé pour permettre de découvrir certains problèmes de performance. Vous avez cependant remarqué que la démarche de recherche et de mesure était un peu difficile à mettre en place. De plus, son plus grand défaut est la modification du code de votre application.

Pour aller plus loin dans la maîtrise de la performance, il faut un outil spécialisé : Blackfire.io, le profileur de performance des applications PHP.

Présentation de Blackfire.io

Blackfire.io est un service disponible sur navigateur et en ligne de commande pour gérer la performance de vos applications PHP. C'est avant tout un profileur bien plus performant que celui fourni dans le framework Symfony, mais c'est également bien plus que cela :

  • son empreinte est minimale et ne requiert aucune modification de votre code ;

  • il permet de trouver les causes de vos problèmes de performance ;

  • la plateforme stocke et permet d'analyser et de comparer vos profils de mesure sur la durée et de façon collaborative ;

  • il est parfaitement intégré avec les solutions de test et d'intégration continue, pour éliminer  les régressions de performance.

Pour l'utiliser, il faut d'abord créer un compte sur la plateforme Blackfire.io.

Création de compte

La création de compte est très simple ! Pour vous inscrire, accédez à la plateforme, cliquez sur "Sign Up" (s'inscrire) dans le haut de page. Vous aurez besoin au choix d'un compte GitHub ou SensioLabs Connect, ou encore d'un compte Google mail.

Une première fenêtre avec les conditions d'utilisation s'affiche, il faut cocher la case "I hereby confirm that I have read and agree to the above Blackfire's Terms of Use" (pour accepter les conditions d'utilisation). Si vous souhaitez avoir accès à la newsletter, cochez également la première case.

Complétez le second formulaire, puis validez. Vous devriez avoir accès à vos premiers profils Blackfire de démonstration fournis par la plateforme :

Cette capture montre l'interface qui liste les profils Blackfire.io après création de compte
Premiers profils avec Blackfire.io

Vous avez probablement remarqué que Blackfire.io dispose de plusieurs plans payants et d'un plan de découverte gratuit (Hack).

Nous aurons besoin d'un plan payant (Premium) pour le troisième chapitre de ce cours, mais il est possible de l'utiliser gratuitement pour une durée de 15 jours ;).
 

Votre premier profil

Cliquez sur la première entrée (une application Symfony de type "Hello World" en production) :

Exemple de profil réalisé sur Blackfire.io
Votre premier profil Blackfire.io !

L'interface est un peu plus complète que le Web Profiler de Symfony et beaucoup plus performante.

Les métriques
Le bloc
Le bloc "Métriques" du service Blackfire.io

Tout d'abord, nous retrouvons en haut de la page le nom du profil, ainsi que les métriques dont nous avons parlé dans le premier chapitre :

  • le temps de génération de la page en PHP, découpé en temps d'accès au processeur et temps d'accès au système de fichiers ;

  • la mémoire utilisée, en mégabytes ;

  • l'utilisation du réseau (nul dans ce cas).

En passant la souris sur chacune de ces métriques, il est possible de regénérer le graphe pour une visualisation centrée sur celles-ci : par défaut, c'est le temps d'exécution complet qui est sélectionné ("wall time" pour Blackfire.io).

L'approche orientée "fonctions"
Le bloc
Le bloc "Fonctions" du service Blackfire.io

Sur le bloc latéral gauche, l'onglet "Functions" est sélectionné et doit ressembler à la capture d'écran précédente. Blackfire.io a une approche de la performance centrée sur l'analyse de toutes les fonctions qui ont été utilisées pour permettre la génération de votre page en PHP.

Il est possible de rechercher une fonction par son nom, de connaître le nombre de fois où elle est appelée et son coût inclusif et exclusif, en passant la souris dessus.

Cliquez sur une fonction pour découvrir par quelle(s) fonction(s) elle est appelée et quelle(s) fonction(s) elle appelle : pour Blackfire, on parlera de "Caller" et de "Callee". 

Le graphe/profil Blackfire
Le bloc
Le bloc "Graphe" du service Blackfire.io

Le bloc principal contient le graphe Blackfire, c'est-à-dire l'essentiel des fonctions qui ont permis la génération de la page PHP. Vous remarquerez qu'un "chemin" est signalé en surbrillance. C'est celui qui a le plus d'impact en termes de performances et qu'il faudra optimiser au sein de votre application.

Pourquoi l'essentiel ? Car certaines fonctions dont l'impact est insignifiant sont ignorées du graphe pour faciliter sa lecture. Ces fonctions sont disponibles dans le moteur de recherche.

En cliquant sur chacun des nœuds du graphe, on obtient les mêmes informations que précédemment en parcourant la liste des fonctions. Vous l'aurez compris : chacun des nœuds représente une fonction et les liens entre chaque nœud définissent les appels et le nombre d'appels. Enfin, le pourcentage représente le coût "inclusif" de la métrique de la fonction.

Les deux approches - par fonction ou par nœud - ont le même objectif : trouver les fonctions les moins performantes de votre application et comprendre pourquoi elles sont si peu performantes.

En résumé

  • Blackfire est un outil spécialisé dans le management de la performance d'une application PHP.

  • C'est un service avec différents plans, accessible par navigateur et ligne de commande.

  • Il a une approche orientée "fonctions" de la performance.

  • Il est possible de parcourir les fonctions à l'aide du graphe ou du moteur de recherche.

  • Enfin, nous retrouvons pour chaque fonction un ensemble de métriques : temps, mémoire, utilisation du réseau...

Cependant, pour l'instant, vous n'avez ni installé ni profilé vos propres applications. C'est ce que vous ferez dans le prochain chapitre :soleil: !

Example of certificate of achievement
Example of certificate of achievement