我遇到了一个IIS应用程序的问题,偶尔在CPU使用率激增,并试图使用procdump获取内存转储进行检查。 我正在运行“procdump.exe -64 -mA 9999”,其中9999是进程的PID。 但是每次我这样做的时候,我都会遇到一个错误:
Only part of a ReadProcessMemory or WriteProcessMemory request was completed.
这样做也可以回收应用程序,减轻CPU峰值,所以我不能继续尝试,直到我得到它的权利。
有谁知道发生了什么问题?
编辑更多的信息:到目前为止,我已经无法生成debugging转储,无论我尝试什么工具。 所有这些似乎都会产生同样的错误。 这是运行带有64位asp.net网站的IIS7的2008 R2 Datacenter。
我最好的猜测是某些东西被阻止,导致一些请求在IIS中保持打开并逐渐使用资源。 如果我使用IISpipe理器监视工作进程并查看所有请求,那么我将在一整天内看到一些“粘住”并永远运行的请求。 其中一些是用于静态文件的。 有些是为aspx页面。 我看不出有什么“共同”的原因。
每隔一段时间,应用程序池开始占用100%的CPU,唯一的补救办法是杀死它。
我不确定是什么原因导致了这个消息,但是我知道你可以使用SysInternals的Process Explorer创build一个转储。 在Process Explorer中,右键单击w3wp.exe并selectCreate Dump> Create Full Dump。 我的Windows 2003 x64服务器花了大约15秒钟来创build一个350 MB转储文件。 这也没有重新启动我的服务器上的应用程序池。
另一种select是Microsoft的debugging诊断工具。 根据许多不同的标准,这是捕获过程转储的终极目标。
我有一个类似的问题,虽然对于Windows服务。 原来我的问题是,这是一个在64位机器上运行的32位进程,所以运行procdump而不是procdump64是我的解决scheme。
你有没有尝试procdump和procdump64 ?