我如何确定什么应用程序泄漏非分页内存?
我们最近在我们的实时服务器上遇到了一个问题,导致我们的Web App停止响应。 所有我们得到的是503错误,直到我们重新启动服务器,那就好了。 最终我将其追溯到httperr.log,发现了大量的1_Connections_Refused错误。 进一步的调查似乎表明我们已经达到了非分页的限制。 从那以后,我们一直在使用Poolmon.exe监视非分页池内存,我们相信我们已经识别出导致问题的标记。 Tag Type Allocs Frees Diff Bytes Per Alloc Even Nonp 51,231,806 50,633,533 684,922 32,878,688 48 如果我们使用poolmon.exe / g,它将Mapped Driver显示为[<未知>事件对象]。 这几乎没有任何帮助。 我的团队花了相当多的时间研究这个问题,一直没有find一个过程来缩小到一个特定的应用程序或服务。 我感觉大多数人似乎通过杀死机器上的进程来解决问题,直到他们看到未分页的内存复位。 这不是你在生产机器上工作时所看到的。 如果我打开任务pipe理器并查看进程列表。 我看到MailService.exe的NP池值为105K,比第二个列出的进程的值高36K。 由于过去我们的邮件服务器出现了一些问题(这可能与这个问题有关系,也可能没有关系),我的直觉是这是导致问题的原因。 但是,在我们开始重新启动服务之前,我想比“直觉”更确定一些。 我也尝试使用poolmon.exe / c,但总是返回错误: unable to load msvcr70.dll/msvcp70.dll 它不会创buildlocaltag.txt。 我的同事不得不从网上下载pooltag.txt,因为我们无法弄清楚它在哪里。 我们没有胜利debugging器或赢得DDK安装(我可以看到)。 也许上面的错误给出了,因为我们没有安装任何一个 – 但我不知道。 最后我试了一下: C:\windows\system32\driver\findstr /m /l Even *.sys 这返回了一个相当大的.sys文件列表,再一次没有帮助手头的问题。 所以我的问题是: 有没有其他办法来缩小这个内存泄漏的原因? […]