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.stringsystem.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 进程内存配置文件工具的主要内容,如果未能解决你的问题,请参考以下文章

nginx模型概念和配置文件结构

asp.net提示System.OutOfMemoryException错误,找不到machine.config文件

在 Asp.net 中运行外部可执行文件的内存限制

压力测试报出503错误---ASP.NET支持大并发的相关配置

Nginx 配置详细文件

nginx 配置优化的几个参数(转)