Le profilage d'une application Java Spring
J'ai un Printemps application qui je crois a quelques goulets d'étranglement, donc je voudrais le faire fonctionner avec un profiler à mesure que les fonctions de la façon dont beaucoup de temps. Les recommandations pour savoir comment je dois faire?
Je suis en cours d'exécution STS, le projet est un projet maven, et je suis en cours d'exécution Printemps 3.0.1
Le profilage d'un Printemps de l'application n'est pas vraiment différent de profilage toute autre application java. Vous pourriez vouloir élargir la question, pour obtenir une sélection plus large de réponses.
OriginalL'auteur niklassaers | 2010-03-19
Vous devez vous connecter pour publier un commentaire.
J'ai fait cela à l'aide de Spring AOP.
J'ai parfois besoin d'une information au sujet de combien de temps faut-il pour exécuter certaines méthodes dans mon projet (méthode du Contrôleur dans l'exemple).
En servlet, xml, j'ai mis
Aussi, j'ai besoin de créer la classe pour les aspects:
Et profiler aspect:
C'est tout.
Lorsque je demande une page de mon application web, les informations sur la méthode d'exécution temps et de l'utilisation de la mémoire JVM imprime dans ma webapp du fichier journal.
En parlant de, pour une raison quelconque, cela fonctionne bien sur mes méthodes d'affaires, mais pas sur mon contrôleurs. Une idée de quoi cela peut-il être?
Désolé, vous ne le dis pas à ta question 🙂 Si votre question est à propos de l'application web et si vous utilisez tomcat servlet container, vous pouvez utiliser SpringSource tc server avec le printemps-insight
Pour la 2ème commentaire: votre applicationContext.xml contient <context:component-scan/>
Salut, désolé je n'ai pas dit dans ma question, je pense que votre réponse est importante à avoir ici. 🙂 J'ai un component-scan dans la applicationContext.xml mais de la minute où je ajouter cet aspect pour les contrôleurs, les contrôleurs ne vous montrez pas plus. Peut-être que j'ai eux dans le mauvais ordre
OriginalL'auteur Yuri.Bulkin
Je recommande VisualVM pour les applications générales de profilage. Il est disponible dans le JDK depuis la version 1.6_10, et à mon avis beaucoup plus rapide et utilisable que sur Eclipse TPTP.
Si votre Printemps application fonctionne dans un serveur d'application (par exemple, Tomcat), vous pourriez essayer de le déployer sur les tc Server developer edition (disponible dans le STS téléchargements). Il est intéressant de capacités de surveillance.
Mise à jour VisualVm URL: visualvm.java.net
merci pour l'URL de mise à jour, j'ai mis à jour dans la réponse ainsi
Nouvelle URL: visualvm.github.io. Java.net est morte.
OriginalL'auteur Csaba_H
Vous pouvez utiliser de l'open source de java profiler comme Profiler4J:
http://profiler4j.sourceforge.net/
ou Netbeans est livré avec un construit dans le générateur de profils et Eclipse dispose également de fonctionnalités de profiling, cependant j'ai trouvé Profiler4J plus facile à utiliser car il a un beau graphique en vous montrant le plus de temps méthodes.
Cela fonctionne bien en STS (eclipse), il suffit de suivre les instructions sur le site.
Ressemble, il ne peut pas encore être développées, mais quand je l'ai utilisé il y a quelques mois il a bien fonctionné. Je suppose que ça ne va pas être déployés à l'aide de votre projet afin de s'il fonctionne comme une fois un outil que vous n'avez pas besoin de s'inquiéter. Il ya des tas d'autres qui sont disponibles dans le commerce, sinon il suffit d'utiliser celui qui est livré avec eclipse.
Hmm, je l'ai essayé, mais il s'avère que ni le Graphe d'Appel, ni l'Arbre d'Appel sont peuplées, même si j'ai instrumenté toutes mes classes et les classes de proxy. La mémoire et les Threads fonctionne bien, même si
Avez-vous pousser le petit bouton snapshot? Que doit remplir le graphique. Dans une application web, vous pouvez effacer les registres à l'aide du bouton sur la barre d'outils, effectuer l'action que vous voulez de profil, puis cliquez sur le bouton "snapshot" pour remplir le graphique pour cette action.
OriginalL'auteur Neal Donnan
Nous avons développé un JMX & Spring AOP en fonction @Profilé d'annotation qui ne le suivi de production (active des invocations, des invocations comte, le temps passé au cours des invocations, des exceptions compter, etc) . Les mesures sont exposées via JMX et peuvent être collectées via Visual VM /JConsole et par les systèmes de surveillance ; nous avons développé un Hyperic HQ Plugin.
Ce @profilé d'annotation est emballé avec beaucoup d'autres JMX extras pour faciliter la surveillance des composants communs (dbcp, util.simultanées, cxf, jms, etc), et a proposé, en vertu d'une entreprise conviviale Apache Software License à http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras .
Espère que cette aide,
Cyrille (Xebia)
OriginalL'auteur
J'ai aimé JRat, même si, comme profiler4j il ne semble pas être développé activement. Dans tous les cas, il est simple à utiliser.
OriginalL'auteur laura
Voici un discussion générale avec les outils recommandés & techniques.
Fondamentalement, il est tout à fait naturel de supposer que si vous voulez savoir comment faire une application plus rapide, que vous devriez commencer par mesurer combien de temps prise de fonctions.
C'est une approche top-down.
Il y a une approche bottom-up, quand vous y réfléchissez, il est tout aussi naturel. Ce n'est pas de demander au sujet de temps, mais de se demander ce qu'il fait, principalement, et pourquoi il le fait.
OriginalL'auteur Mike Dunlavey
Un peu modifié la version de Yuri réponse sur le dessus (la réponse choisie) que l'auto calcule les totaux de durées et les range desc. Les totaux est imprimé à la fin seulement.
Vous pourriez économiser 10 mns.
OriginalL'auteur AhHatem