2天后,我们发布了现有asp.net 2.0应用程序的新版本,现在已转换为4.5。现在我们突然看到这个asp.net应用程序的应用程序池在生产服务器上消耗大量内存,我估计超过30 GB。代码方面,这个应用程序之前没有做过任何事情,或者现在已经添加了这个新版本,它将消耗任何重量,也没有任何文件上传/下载,重度缓存没有。
由于我无法在代码中找到任何可能导致此问题的内容,所以我需要一些可以在服务器上讲述很少细节的分析器。
有没有任何免费或开源工具可以帮助我们找出所有会话数据的详细信息,其中包含存储在此应用程序池的服务器上的大小,以及任何其他有助于了解此特定应用程序池的详细信息带走了这么多记忆。 除了工具,如果有任何其他方向/建议,这将是有帮助的。感谢...
答案 0 :(得分:4)
这些问题通常可以通过微软免费获得的WinDbg调试工具进行追踪。
首先,您应该创建当前w3wp进程的转储文件。
https://msdn.microsoft.com/en-us/library/d5zhxt22.aspx
之后,您将能够将该进程的当前状态加载到WinDbg中。 https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
https://theartofdev.com/windbg-cheat-sheet/
请记住,WinDbg是一种低级工具,因此您需要花一些时间来学习并习惯它。
使用示例:
之后你需要设置符号:
.symfix
.reload
.loadby sos clr
- 如果服务器和您的计算机没有相同版本的.net clr(What to do with "The version of SOS does not match the version of CLR you are debugging" in WinDbg?),则可能会出现异常。用!clrstack命令测试它。
如果要使用扩展命令(http://www.stevestechspot.com/)
加载其他模块.load PathToFile \ sosex.dll
!sosex.help
你也可以在Tess Ferrandez的博客上找到非常有用的信息,提示和技巧https://blogs.msdn.microsoft.com/tess/tag/debugging/