Ash*_*ous 7 c# iis asp.net-mvc memory-leaks memory-management
我有一个Web应用程序,我使用很多不同的第三方组件,CMS,当然还有我的代码.出于某种原因,我失去了内存异常.
脚本引发了异常:内存不足
我试图找出发生了什么.这就是我发现的:
我用50个线程运行测试来调用我的web应用程序的15页.记忆似乎很好.IIS进程仅使用400 MB的RAM
我在web.config中添加了一个空格,突然我的IIS进程在30分钟内开始增长到超过GB.Visual Studio无法拍摄我的内存快照,因为它太大了(真的吗?!)所以我安装了ANTS内存分析器,但它说我的应用程序只使用了大约300 MB
几分钟后我停止了测试,但内存没有释放.
它似乎并不是应用程序特别使用100-200MB内存我正在为我的控制器使用输出缓存.我不明白的是,IIS消耗的内存一直在增长,出现了什么问题
我的应用程序已自动重启,W3WP崩溃导致IIS释放内存,而我的压力没有运行一段时间:
应用程序:w3wp.exe Framework版本:v4.0.30319描述:由于.NET运行时在IP 5A3A86F1(5A0F0000)中出现内部错误而导致进程终止,退出代码为80131506.
和
错误应用程序名称:w3wp.exe,版本:10.0.15063.0,时间戳:0xacce422f错误模块名称:clr.dll,版本:4.7.2098.0,时间戳:0x59028d36异常代码:0xc0000005错误偏移量:0x002b86f1错误进程id:0x50a4错误应用程序启动时间:0x01d2ee688f323893错误应用程序路径:C:\ WINDOWS\SysWOW64\inetsrv\w3wp.exe错误模块路径:C:\ Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll报告ID:4362ddc5-f8d7- 4441-8916-3830f9268b3a错误包全名:错误包相关申请ID:
我运行DebugDiag并且我已经对网站进行了压力测试,直到它消耗了大约3.5 GB的RAM.
Chakra是微软的图书馆.
所以现在我有2个问题.
2-它说27,000个分配.这是否意味着内存中仍有27,000个或者其中一些可能被分配然后处理?
3-它还没有告诉我任何关于3GB消耗RAM的剩余部分.它我总共只有600 MB(私有+虚拟).
在您的分析中,我发现 .net 分析未正确完成。您是否在捕获内存转储的同一台机器上进行分析?
为了使 debugdiag 正常工作,您还必须在分析计算机上安装相同版本的 .net Framework(应用程序)。
另外请不要像这样进行本机内存泄漏转储,除非没有弄清楚非托管泄漏。从您的分析来看,这看起来像是托管泄漏。
当您更改 web.config 文件时,它会导致应用程序域卸载并重新加载
让我们一步一步来做
现在比较每个转储文件(1 GB、2 GB、3.5 GB)的分析,它应该告诉您哪些 .NET 对象正在增加并且没有被垃圾收集。
在内存分析中,您应该看到CLR 信息****、.NET GC 堆信息、大多数内存消耗的 .NET 对象等,如下所示。如果您的 .net 符号被 debugdiag 分析正确识别,就会出现这种情况
CLR Information
 CLR version = 4.6.1648.0
 Microsoft.Diagnostics.Runtime version = 0.9.2.0
.NET GC Heap Information
Number of GC Heaps: 4 
Heap Size 0x4001ce8 (67,116,264) 
Heap Size 0x3d5cca0 (64,343,200) 
Heap Size 0x3f8b0d0 (66,629,840) 
Heap Size 0x3ccb0d0 (63,746,256) 
GC Heap Size 249.71 MBytes  
Total Commit Size  249 MB 
Total Reserved Size    17158 MB 
40 most memory consuming .NET object types
System.Char[]   193.01 MBytes    (12450 objects )
Free      45.21 MBytes    (4760 objects )
System.String      1.56 MBytes    (18072 objects ) 
==============trimmed out =======================
DebugDaig 自动分析应给出以下结果
请注意,有时debugdiag自动分析无法找出根本原因,需要使用windbg手动分析。DebugDiag分析,请参考此视频。
希望这可以帮助!
| 归档时间: | 
 | 
| 查看次数: | 4783 次 | 
| 最近记录: |