能够分析远程计算机的.NET内存分析器

3

我拥有Ants Profiler 4,它非常适用于性能/内存分析。

不幸的是,它只能在本地计算机上运行,我无法附加到运行中的进程。 但是我遇到一个内存泄漏问题,似乎只在我们的生产服务器上发生。一个使用vb.net编写的Windows控制台应用程序在数天内以恒定的内存使用率运行良好,然后突然开始消耗所有可用内存,在24小时内内存就会被占满。

有没有办法从运行中的进程中收集一些数据并进行检查?


服务器是哪个Windows版本?如果从任务管理器进行内存转储是一种选择,您可以选择WinDbg路线。 - Nick Craver
2个回答

3
截至本文撰写时,两个重要的.NET商业分析工具——ANTS和dotTrace仍不支持远程内存分配分析。:(
我正在研究这个问题,并目前考虑两个选项。第一个是微软的CLR分析器:

http://clrprofiler.codeplex.com/

虽然它不支持远程分析,但它拥有完整的源代码。我认为添加一些命令行选项让你可以告诉它附加到一个进程,获取内存快照并发送到磁盘,然后分离,这不会太费力。使用Powershell在实时服务器上进行远程执行,然后我可以在桌面上随意分析快照。
我正在考虑的另一个选择是从实时应用程序中获取minidump,并使用sos运行关于内存使用情况的报告。请注意,由于this bug,无法使用procdump -r来完成minidump,必须进行完整的冻结转储。
两种方法都需要一定的工作量,但我还没有找到更好的解决方案。

啊,我们找到了。这是一个商业解决方案,具有“内存快照”功能,可以在生产服务器上运行,并在工作站上进行分析:http://memprofiler.com/nmpcore.aspx - scobi

-1

升级到最新版本(6.0)。它支持“附加到进程”,我想这就是你想要的!


似乎只能附加到本地进程? - Dan
5
为什么这被标记为答案?Attach to Process 只能在本地工作。即使在版本 7.4 中,ANTS Memory Profiler 也不支持远程机器。 - scobi
仅限本地进程,不支持远程。 - Tal Laitner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接