ASP.Net Worker 进程内存配置文件工具
Posted
技术标签:
【中文标题】ASP.Net Worker 进程内存配置文件工具【英文标题】:ASP.Net Worker Process Memory Profile Tools 【发布时间】:2009-06-12 20:55:16 【问题描述】:我们有一个相当大容量的 ASP.Net 站点,使用 C# 编写,使用 MS 商务服务器,在 32 位环境中运行。我经常看到高达 980 兆字节的工作进程。我想分析这个过程,并确定在代码中可以在哪里获得任何收益,以减少该站点的内存占用。我的问题是哪些工具对您在 ASP.Net Web 应用程序上做这种事情效果很好?
我正在寻找能够给我非常具体的反馈的工具,这将真正有助于清楚地了解代码中需要更改的内容。如果此工具可以分析我们的生产环境工作进程,以便比较更具体的数据集,那将是最好的。
[编辑]
到目前为止,似乎一致认为这是 Ants 和 JetBrains 之间的折腾。有人用过吗?如果是这样,哪一个更胜一筹,或者各自的优缺点是什么?
【问题讨论】:
相关:***.com/questions/3927/… 【参考方案1】:有一种免费的方式。
启动任务管理器 右键单击 w3wp 进程 选择“创建转储”(我很惊讶很少有人知道此功能 - 包括我自己在内!) 将转储文件复制到您的本地计算机(这样我们就不会打扰生产服务器) 在 Visual Studio 中打开文件 享受 选择“调试托管内存”以查看高级查看哪个类使用内存等。AFAIK,以上需要 Visual Studio “Ultimate” 版本(我猜它现在称为“Enterprise”?)。如果您没有,请按照以下步骤操作(也很简单)
启动 WinDbg(免费工具,Windows SDK 的一部分,*** 上有大量关于如何在没有所有 SDK 膨胀软件的情况下下载 WinDbg 的答案) 按 Ctrl + D 并将转储文件加载到 WinDbg 中 键入.loadby sos clr
(这将加载允许WinDbg 分析.NET 进程的SOS.dll,SOS.dll 是NET Framework 的一部分,因此您可能已经拥有它)
类型!dumpheap -stat
(这将输出类名,按内存使用量,升序排序。跳过system.string
和system.byte[]
类,因为这些是副作用,而不是原因......)
2019 年更新:WinDbg 现在可通过 MS Store 获得,只需搜索“WinDbg”,然后单击几下即可。
【讨论】:
【参考方案2】:ANTS Profiler 非常擅长分析 ASP.NET 应用程序。
【讨论】:
我可以,但您需要在生产机器上运行该工具。【参考方案3】:http://www.jetbrains.com/profiler/
【讨论】:
是的,如果我不使用 ANTS,我通常会使用这个,但我一辈子都记不住它叫什么! + 1 谢谢我看了他们的一些演示,看起来这个正是我想要的。【参考方案4】:ANTS memory profiler 之类的内容可能对您有用。
【讨论】:
【参考方案5】:还可以考虑来自自动化 QA 的 AQTime。
【讨论】:
【参考方案6】:JetBrains 的 dotTrace 多次救了我。 它不是免费的(提供试用版),但它真的很强大!
【讨论】:
【参考方案7】:我们使用AviCode,它对我们非常有效。
【讨论】:
有趣的是以前没听说过那个。我可能会下载一份评估版。以上是关于ASP.Net Worker 进程内存配置文件工具的主要内容,如果未能解决你的问题,请参考以下文章
asp.net提示System.OutOfMemoryException错误,找不到machine.config文件