w3wp.exe 上的 procdump:ReadProcessMemory 或 WriteProcessMemory 请求仅部分完成

w3wp.exe 上的 procdump:ReadProcessMemory 或 WriteProcessMemory 请求仅部分完成

我遇到了一个 IIS 应用程序的问题,它偶尔会突然出现 CPU 使用率飙升的情况,我试图使用 procdump 获取内存转储以供检查。我运行“procdump.exe -64 -mA 9999”,其中 9999 是进程的 pid。但每次我这样做时,都会收到错误:

Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

这样做还会回收应用程序池,缓解 CPU 峰值,因此我不能继续尝试,直到我做对为止。

有人知道发生了什么问题吗?

编辑更多信息: 到目前为止,无论我尝试什么工具,我都无法生成调试转储。所有这些工具似乎都会生成相同类型的错误。这是运行 IIS7 的 2008 R2 Datacenter,带有 64 位 asp.net 网站。

我最好的猜测是某些东西被阻塞了,导致某些请求在 IIS 中保持打开状态并逐渐耗尽资源。如果我使用 IIS 管理器监视工作进程并查看所有请求,那么一整天我都会开始看到一些请求“卡住”并永远运行。其中一些是针对静态文件的。一些是针对 aspx 页面的。我看不出它们有任何“常见”原因。

应用程序池偶尔会开始占用 100% 的 CPU,唯一的补救措施就是将其关闭。

答案1

我不确定是什么导致了该消息,但我知道您可以使用 SysInternals 的 Process Explorer 创建转储。在 Process Explorer 中,右键单击 w3wp.exe 并选择“创建转储”>“创建完整转储”。在我的 Windows 2003 x64 服务器上创建 350 MB 转储文件大约需要 15 秒。这也没有重新启动我服务器上的应用程序池。

另一个选择是 Microsoft 的 Debug Diag 工具。这是基于多种不同标准捕获进程转储的终极工具。

https://www.microsoft.com/downloads/en/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

答案2

我遇到了类似的问题,不过是针对 Windows 服务。结果发现我的问题是在 64 位机器上运行的 32 位进程,因此运行procdump而不是 才是procdump64我的解决方案。

您是否尝试过procdumpprocdump64

相关内容