Comment puis-je profiler les performances d'une application .NET déjà déployée chez un client?

StackOverflow https://stackoverflow.com/questions/416613

Question

J'ai plusieurs clients pour lesquels mon application WinForms ne fonctionne pas aussi bien que chez d'autres clients. J'utilise la technologie dotTrace de JetBrain ici au bureau, mais cela ne m'aide pas à trouver des goulets d'étranglement sur les machines de nos clients. Comment puis-je profiler les performances d'une application .NET déjà déployée chez un client? Existe-t-il des outils de profilage avec un composant redistribuable qui me permettent de produire des résultats de profilage qui ne peuvent pas être utilisés tant que je n'ai pas ramené les résultats (un instantané dans dotTrace) à l'outil de profilage complet?

Mise à jour: Le NProf est librement distribuable, Je songe à le déployer sur le poste de travail d'un client. Je vais rapporter les résultats ici.

Était-ce utile?

La solution

Je ne connais pas dotTrace, mais j'ai utilisé les outils d'instrumentation et de profilage Visual Studio 2008 dans le contexte de Visual Studio et je pense qu'ils sont distribués avec le Kit de développement .NET 3.5 SDK.

L'outil VSInstr.exe: http://msdn.microsoft.com/en-us/library/ms182402. aspx va instrumenter le binaire déployé.

VSPerfCmd: http://msdn.microsoft.com/en-us/library/ms182403. aspx peut capturer les données de performance de l'application instrumentée.

Je ne l'ai jamais fait directement et uniquement à partir de la ligne de commande, je ne peux donc pas vous offrir beaucoup d'aide, mais je me suis dit que c'était une autre option pour vous, au moins.

Autres conseils

Je pense donc que ce dont vous pourriez avoir besoin est une méthode de mesure des performances et du temps de déploiement. Aussi ingrats qu'ils soient, je pourrais envisager d'ajouter des compteurs de performance à votre application. Voir System.Diagnostics . J'ai largement utilisé le logiciel pour surveiller les applications lors du déploiement. J'ai trouvé que les profileurs géniaux dissimulent parfois certains problèmes dus à leurs frais généraux. Par exemple, si votre application touche une base de données et que le disque est lent, les requêtes prennent plus de temps, ce qui peut ne pas être apparent dans un profileur, car l'application s'exécutera généralement plus lentement.

Pour le côté client, si votre application ne nécessite pas d'accès administrateur à l'installation, il est possible que les compteurs de performances fassent partie d'un "mode de diagnostic". depuis leur installation nécessite un accès administrateur. Vous voudriez mettre des compteurs de performances pour mesurer des éléments tels que la durée des appels de base de données et de service, la taille des structures de données susceptibles de croître et le nombre d'échecs qui se produisent.

Nous savons déjà que votre code fonctionne car il fonctionne bien sur certaines configurations de clients. Pensez donc à ajouter une instrumentation à votre application. C’est l’un des éléments les plus importants de l’écriture d’un logiciel fiable, comme une bonne journalisation. Ce n'est pas amusant, mais à mon avis, cela doit être fait. C'est souvent la seule chose qui vous donne une visibilité sur les tâches de déploiement de votre application. L'application actuelle sur laquelle je travaille est passée d'environ 20 compteurs de performances dans Rev 1 à environ 150 dans Rev 2. Je ne surveille pas la plupart d'entre eux tout le temps, mais pour m'avertir des problèmes de performances et de fiabilité, ils valent bien la peine d'être passés. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top