2010-08-12 6 views
3

Je possède l'Ants Profiler 4 qui est idéal pour le profilage de performance/mémoire.. Profileur de mémoire .net qui peut profiler les machines distantes

Malheureusement, cela ne fonctionne que sur la machine locale et je ne peux pas me connecter à un processus en cours. Mais j'ai une fuite de mémoire qui semble seulement survenir sur notre serveur de production. Une application de console Windows écrite dans vb.net fonctionne correctement avec une utilisation de la mémoire constante pendant plusieurs jours et commence soudainement à consommer toute la mémoire disponible jusqu'à 24 heures plus tard.

Existe-t-il un moyen de collecter des données du processus en cours et de les inspecter?

+0

Quelle version de Windows est le serveur? Si vous effectuez un vidage de mémoire à partir du gestionnaire de tâches, vous pouvez effectuer l'itinéraire WinDbg. –

Répondre

-1

Mettre à niveau vers la dernière version (6.0). Cela a un support pour Attach to Process, qui est, je pense, ce que vous cherchez!

+0

Bon à savoir, peut-être un bon moment pour évaluer/mettre à jour. –

+0

Mais semble-t-il seulement s'attacher aux processus locaux? – Dan

+5

Pourquoi cela a-t-il été marqué comme la réponse? Attacher au processus ne fonctionne que localement. Il n'y a pas de support dans ANTS Memory Profiler pour les machines distantes, même en 7.4. – scobi

3

Les deux grands profileurs commerciaux .NET - ANTS et dotTrace - ne prennent toujours pas en charge le profilage à distance des allocations de mémoire. Visage triste.

Je suis moi-même en train de faire des recherches sur ce problème et j'examine actuellement deux options. Le premier est le Profiler CLR de Microsoft:

http://clrprofiler.codeplex.com/

Bien que cela ne prend pas en charge le profilage à distance, elle a source complète. Je ne pense pas que ce serait trop de travail pour y ajouter des options de ligne de commande qui vous permettent de le relier à un processus, de récupérer un instantané de mémoire et de l'envoyer sur le disque, puis de le détacher. Utilisez Powershell pour l'exécuter à distance sur le serveur live, puis je peux analyser l'instantané sur mon bureau.

L'autre option que je considère est de saisir une minidump de l'application en direct et d'utiliser sos pour exécuter des rapports de la mémoire utilisée. Notez que le minidump ne peut malheureusement pas être fait avec procdump -r en raison de this bug, doit faire un vidage complet gelé.

Nontrivial travail de toute façon et je ne fais que commencer, mais je n'ai pas encore trouvé une meilleure solution.

+0

Ah, c'est parti. Il s'agit d'une solution commerciale dotée d'une fonction de "mémoire instantanée" pouvant s'exécuter sur un serveur de production, pour analyse sur un poste de travail: http://memprofiler.com/nmpcore.aspx – scobi

Questions connexes