Questions tagged «poolmon»

1
如何确定哪个应用程序正在泄漏未分页的内存?
最近,我们的实时服务器出现问题,导致我们的Web应用程序停止响应。我们得到的都是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,它将映射的驱动程序显示为[<未知>事件对象]。 这根本没有帮助。我的团队花费了大量时间来研究此问题,但是还没有找到将其范围缩小到特定应用程序或服务的过程。我感觉到,大多数人似乎通过杀死计算机上的进程来解决问题,直到他们看到未分页的内存重置为止。这并不是在生产机器上工作时想要看到的。 如果我打开任务管理器并查看进程列表。我看到MailService.exe的NP池值为105K,比第二个列出的进程的值高36K。由于过去我们的邮件服务器存在一些问题(可能与此问题相关,也可能与该问题无关),我的直觉是这是导致此问题的原因。 但是,在我们重新启动服务之前,我想拥有的不仅仅是确定的感觉。 我也尝试使用poolmon.exe / c,但这总是返回错误: unable to load msvcr70.dll/msvcp70.dll 而且它不会创建localtag.txt。我的同事不得不从互联网上下载pooltag.txt,因为我们无法确定它的位置。我们没有安装Win调试器或Win DDK(我可以看到)。可能是由于没有安装上述任何一个错误而导致的,但我不知道。 最后我尝试了: C:\windows\system32\driver\findstr /m /l Even *.sys 这返回了相当大的.sys文件列表,再次对当前的问题完全没有帮助。 所以我的问题是:还有其他方法可以缩小导致此内存泄漏的原因吗? 更新: 如下所示,我已经记录了最后一天左右的池未分页字节数,以查看是否有任何趋势。在大多数情况下,所有过程的使用似乎都是静态的。他们中的两个看起来略有滴答声。在接下来的几天中,我将继续进行监视。 我也忘记了前面提到的任何一个进程似乎都没有使用过多的句柄。 更新2: 最近几周我一直在监视它。在此期间,单个进程的非分页字节池和总的非分页字节池都保持相对稳定。在此期间,Windows已更新,服务器重新启动,因此我想知道是否已经解决了问题。现在,我肯定没有看到非分页字节池的持续增长。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.