Maison / Technologie / Profilage des performances pendant votre flux de travail de développement

Profilage des performances pendant votre flux de travail de développement

Diver subjectivité sur les performances avec Java VisualVM

Le profilage des performances n’est pas simplement une activité réservée aux équipes d’exploitation surveillant une application en production – à mon avis, c’est une compétence qui devrait faire partie du processus de développement de chaque développeur / ingénieur logiciel.

Profilage des performances pendant votre flux de travail de développement 0 LEzX3GLzR9P1fMf6

Ce n’est pas juste pour le dépannage, soyez proactif et regardez sous le capot (capot * ??) avant même que le problème ne commence.

Je vais te demander 2 des questions:

  • Voulez-vous être le membre de l’équipe qui a validé les deux lignes de code mis la production à genoux et le mettre au point?

OU:

  • Voulez-vous être le glorieux membre de l’équipe qui sauvé l’équipe de fusionner le code défectueux en premier lieu?

À moins que vous ne détestiez votre équipe et votre entreprise, je suis persuadé que vous souhaitez devenir ce dernier membre de l’équipe. C’est pourquoi j’ai élaboré ce guide rapide pour que vous puissiez commencer à intégrer le profilage des performances à tout ce que vous faites.

"Attends, pourquoi ne parles-tu que de Java?"

Une petite chose à noter – évidemment, je suis conscient que d’autres langages de programmation existent:

Profilage des performances pendant votre flux de travail de développement 1 4Zy24SAPA9WJbrQt VtHPg
Stack Overflow Developer Survey 2019 – Langages de programmation, de script et de balisage les plus populaires (https://insights.stackoverflow.com/survey/2019)

J’ai choisi de me concentrer sur le profilage d’applications Java pour plusieurs raisons – principalement parce que je ne souhaite pas que cet article soit trop long – décrire un outil de profilage pour chaque langue existante prendrait beaucoup de temps – mais aussi parce que Java est toujours un choix populaire pour les services centraux principaux.

Cela ne signifie pas que vous ne devriez pas non plus vous intéresser aux performances du front-end – en fait, vous devriez totalement.

Qu’est-ce que le profilage?

Le profilage (en termes d’applications logicielles) consiste à surveiller une application à différents niveaux d’exécution pour comprendre et voir où le temps est passé et où les ressources sont utilisées.

Résultat d'image pour les graphiques de profilage java  Profilage des performances pendant votre flux de travail de développement 0 uAReLPXmdNbVfNii
Gracieuseté de https://medium.com/netflix-techblog/java-in-flames-e763b3d32166

Pour ce faire, la plupart des profils utilisent généralement une sorte d’agent qui se connecte à votre application et instruments vos méthodes.

Cette instrumentation / marquage de méthodes permet au profileur de déterminer le moment où une méthode est exécutée et également de voir combien de temps elle prend pour effectuer une tâche particulière.

Vous pouvez en apprendre beaucoup plus sur l’intuition des profileurs à partir d’un excellent article écrit par nvdv ici:

Comment fonctionnent les profileurs

Pourquoi devrais-je faire ça?

Il existe plus de raisons d’intégrer le profilage de performance dans votre flux de travail de développement que de simplement éviter la catastrophe.

Profilage des performances pendant votre flux de travail de développement 1 esXrNvMa5UVNsQvwojaeNg
"OK, je vais juste fusionner ce CSS …"

Vous pouvez acquérir une compréhension profonde et fondamentale de ce que fait votre code à tout moment et de l’impact que de minuscules modifications peuvent avoir sur le fonctionnement général de l’application.

Autres raisons:

  • Concentrez-vous sur la refactorisation afin d’utiliser et de consommer moins de ressources matérielles.
  • Déterminez des seuils opérationnels réalistes pour le suivi de la production.
  • Trouvez des méthodes coûteuses invoquées à plusieurs reprises et mettez en cache leurs résultats sous forme de variables.
  • “Cut the Fat” – Supprimez le code et les branches redondantes et qui ne sont jamais appelées dans des scénarios réels.

Installation de VisualVM

VisualVM est un Open source outil qui vous permet d’interroger les applications Java exécutées localement et à distance. Vous pouvez l’utiliser pour analyser des données de tas, surveiller la récupération de place et localiser les fuites de mémoire.

C’est incroyablement puissant, mais en plus, c’est complètement libre ?.

Profilage des performances pendant votre flux de travail de développement 0 g6md 0LtkkUwFF1R

Pour Linux, Windows et Mac, téléchargez simplement la distribution appropriée ici:

VisualVM: Télécharger

Et courir!

Profilage des performances pendant votre flux de travail de développement 0 TRwN 6I1Ufe VZy0

… la application.

VisualVM

Au lancement, vous verrez localement toutes les machines virtuelles Java en cours d’exécution sur votre machine et vous aurez la possibilité de sélectionner l’une d’elles à interroger. Vous avez également la possibilité de sélectionner des machines virtuelles et des hôtes distants:

Profilage des performances pendant votre flux de travail de développement 1 dpkJvlRobG3eVAWPH5MW5A
Cette liste inclut VisualVM lui-même… profilez votre profileur!

Lors de la sélection d’une machine virtuelle Java en cours d’exécution, vous pouvez afficher les arguments actuels de la machine virtuelle Java pour l’application:

Profilage des performances pendant votre flux de travail de développement 1 1IsbK PQ qC9EgnOobHAFw

Monitor CPU, Heap, PermGen / Metaspace – voyez le nombre de classes chargées et le nombre de threads:

Profilage des performances pendant votre flux de travail de développement 1 TKmpkK0Mz4OmuIgu3ehaAw

Voir l’état actuel des threads en cours et prendre une Thread Dump:

Profilage des performances pendant votre flux de travail de développement 1 kYU4OnZwNDX5SRP4Jhn3dA

Échantillon l’état actuel de l’application et des méthodes en cours d’exécution:

Profilage des performances pendant votre flux de travail de développement 1 F6Tq49x3k2qIWTUOcGdIGQ

Et enfin, vous pouvez Profil ton application.

Lors du profilage avec VisualVM, vous disposez de plusieurs options pour le profilage des opérations CPU, Mémoire et JDBC de votre application:

Profilage des performances pendant votre flux de travail de développement 1 6dSRtL RPYwL7AuA1Dw7OA

Vous avez la possibilité de démarrer le profilage et de nommer uniquement des packages, sous-packages ou classes spécifiques à profiler:

Profilage des performances pendant votre flux de travail de développement 1  mTsUU2tImMrz63iINwFkQ

CPU Profiling Une application

Avec Profilage de la CPU En cours d’exécution, vous commencerez à voir votre application instrumentée:

Profilage des performances pendant votre flux de travail de développement 1 iH8lSq0juoNlDyL49M6vGQ
Profilage des performances pendant votre flux de travail de développement 1 uyHTUCWYNDX2vfewJvbxIg

Pour cet exemple, j’ai choisi de profiler une application simple qui utilise Apache Camel JDBC pour lire dans une file d’attente de la base de données et envoyer des messages à un service SMS tiers, Twilio.

Profilage des performances pendant votre flux de travail de développement 0 9PxbzP47ezFCfSwz

Pendant que le profileur est en cours d’exécution, je dépose un message de test dans la file d’attente de la base de données et inspecte les résultats.

C’est une application très simpliste, mais les résultats sont intéressants:

Profilage des performances pendant votre flux de travail de développement 1 n2S5UYDGeV1t5XFPt2lsLg

Les résultats du profilage démontrent que la majeure partie de mon temps d’exécution pour le traitement des messages de cette application particulière est contenue dans DispatchService #dispatchMessageméthode:

Profilage des performances pendant votre flux de travail de développement 1 LTqza3I0F8CSc2q2RnT9Lg

Ici j’utilise Le SDK Java officiel de Twilio faire un appel REST à Twilio pour envoyer un SMS.

Pour être honnête, les performances ne sont pas particulièrement lentes et l’optimisation des performances n’est donc pas grande.

Une chose que cet exemple met en évidence, cependant, est la précision avec laquelle nous pouvons aller avec le profilage et utilisez-le pour trouver des goulots d’étranglement liés aux performances, même au plus profond des dépendances de notre projet.

Résumé

J’espère que vous avez trouvé cela utile.

Débuter avec le profilage est facile et vaut vraiment la peine de s’y mettre.

Ce que cette technique fournit est données de performance objectives; avec suffisamment d’essais similaires, nous pouvons déterminer objectivement où résident les parties les plus lentes de notre code d’application(plutôt que ce soit conjecture, débat ou opinion).

Profilage des performances pendant votre flux de travail de développement 0 oNf71bgGqglxxumv
Gracieuseté de: https://www.smbc-comics.com/comic/objective-sympathy

Amusez-vous et envisagez de mettre en place un profilage des performances en tant qu’étape de votre flux de travail de développement, avant de soulever cette demande d’extraction!

Merci d’avoir lu! ?

https://medium.com/media/3c851dac986ab6dbb2d1aaa91205a8eb/hrefProfilage des performances pendant votre flux de travail de développement stat event post


Profilage des performances pendant votre flux de travail de développement a été publié à l’origine dans Hacker midi sur Medium, où les gens poursuivent la conversation en soulignant et en répondant à cette histoire.

Source

A propos newstrotteur-fr

Découvrez également

Une nouvelle bande-annonce palpitante pour CRISIS SUR LES TERRES INFINIES de DC présente La mort de Superman – Newstrotteur exciting new trailer for dcs crisis on infinite earths features the death of superman social 310x165

Une nouvelle bande-annonce palpitante pour CRISIS SUR LES TERRES INFINIES de DC présente La mort de Superman – Newstrotteur

La CW a publié une superbe nouvelle bande-annonce de la série d’événements crossover Crisis on …

Laisser un commentaire