我怎样才能抓取我的W3WP.exe进程的内存转储?

我正在跟踪我对Windows 2008 SP2服务器的最新版本的CPU使用情况。 这是任务pipe理器screenie …

替代文字

看看它如何刺激? 我想知道是什么导致了他们。 在我做任何事之前,我猜我需要一个内存转储。 目前这个过程大概在450MB左右。

任何人有任何想法如何我可以抓住一个内存转储时,它尖峰..说.. 50%。 秒杀 – >快照。 不是多快照,只有一个。 我知道如何手动获得转储..但是这太难了。 触发后我需要一次dump,比如说cpu> 50%。

然后我必须弄清楚如何debugging它。

有什么build议么?

设置性能警报,并在操作页面上运行程序或批处理脚本来生成转储。

替代文字

SysInternals VMMap具有用于编写脚本的命令行选项,并可能为您提供所需的信息。

vmmap.exe -p w3wp.exe C:\memory.txt 

GUI也相当有帮助。

替代文字

您可以使用Windowsdebugging工具获取内存转储。

adplus.vbs脚本可以从命令行执行此操作,因此可以将其作为可靠性和性能监视器中设置的数据收集中的警报任务添加。

面临的挑战是确定一个长期的过程,w3wp.exe进程通常按照计划进行回收,因此您需要重新创build数据收集和警报。

其他:SysInternals刚刚发布了一个新的命令行工具:ProcDump,创build进程转储内置的支持挂起(非响应)窗口和CPU上面的一些threashold。 看到这里 。

DebugDiag for IIS可以被编程为当应用程序挂起时(根据某些规则)进行转储。 如果没有一个用于CPU使用(我不记得我的头顶抱歉), DebugDiag博客有一个VB脚本,将附加到Perfmon,并让你触发一个转储时满足一定的标准 – 在这情况下,您的CPU使用率可能会触发完整的w3wp内存转储。

“如何使用debugging诊断工具v1.1(DebugDiag)debugging用户模式进程”白皮书中包含的内容比您想要知道的要多得多。

更新: DebugDiag v2现在可用。

如果您正在尝试解决什么是使用CPU,然后用户性能监视器。 监视所有实例的“进程”计数器%处理器时间。 您可以只看图表,或者将其设置为login到可以在Excel中分析的CSV文件。

JR

debugging:

  • 转储的本地debugging可以在VS2005和VS2008中完成,只要确保符号设置为使用MS的符号服务器即可。

  • 托pipe(ASP.NET)debugging可以在VS2010(Beta)或WinDbg中使用SOS扩展完成。

看看下面的博客更多细节:

  • 约翰·罗宾斯
  • “ 如果断了,就修好吧,你应该 ”

关于这个话题已经写了多本书,这个空间太大,甚至没有开始。