w3wp.exe即使有可用内存仍然耗尽内存

3
我们遇到了一个奇怪的问题。我们的ASP.NET应用程序运行在64位Windows 2008/IIS7机器上,具有16Gb的内存。当w3wp.exe进程达到4Gb时(我们通过服务器上的任务管理器简单跟踪),即使仍有大量可用内存,也会抛出内存不足异常。
在使用64位应用程序池的64位系统上,是否存在ASP.NET进程受限于4Gb内存的已知问题?
是否有任何方法来解除这个限制?

如果应用程序池超过1GB的RAM,通常是危险的,我已经了解到。我读到的一般准则是保持<1 GB。检查是否限制了可用于应用程序池的内存。您可能需要研究负载平衡或找出在.NET应用程序中哪个进程正在运行。收集未使用的资源,并确保根据需要释放资源。此服务器上还有其他应用程序池运行吗?SharePoint? - apollosoftware.org
@AmitApollo 谢谢回复。是的,我知道内存滥用的影响,并正在努力找出可能的原因。同时,我确实需要这个ASP.NET进程能够超过4GB的RAM。有什么想法吗?在此服务器上运行其他应用程序池,但没有任何一个像这个应用程序那样强烈。而且没有SharePoint。内存不会一直保持这么高的峰值,它会下降,但我确实需要它能够超过这个限制。 - Yuriy Galanter
你是在特别针对 32 位架构 进行自定义配置构建的,还是使用了 任何 CPU 配置? - Karl Anderson
1个回答

1
似乎您有一个未处理的资源,最终会得到垃圾回收,但这个过程不够快满足您的需求。您是否重复使用 SQLConnection 对象?还是 MailClient 对象?或者非托管 Image 对象?
至于低于预期的内存限制,ASP.NET 应用程序有两种类型的内存使用:保留内存和实际使用的内存。我认为任务管理器跟踪实际内存使用情况,但保留内存可能也有一个限制。要找出您的进程占用了多少保留内存,请转到 IIS7,在服务器上单击“进程”选项,然后单击您的应用程序进程。它应该显示 CPU 使用情况、请求数和内存使用情况(保留和实际)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接