【发布时间】:2010-09-27 10:47:10
【问题描述】:
环境: Windows 2003 服务器(32 位); IIS6、ASP.NET 2.0 (3.5); 4Gb 内存; 1个工作进程
我们有一个非常大的 System.XmlDocument 被加载到内存中的情况,然后它进入一个已编译的 XSL 转换。 发生的情况是,当 Web 请求进入服务器时,服务器处于空闲状态,可用系统内存为 2500Mb。
随着 XML DOM 的填充,可用内存减少了大约 500Mb,此时我们会收到 System.OutOfMemoryException 事件。此时系统理论上应该还有 2000Mb 的可用内存可用于服务请求(根据 Perfmon)。
我的相关问题是:
1) 在堆栈的哪个级别满足内存不足限制?操作系统? IIS? ASP.NET?工作进程?这是单个网络请求的限制吗?
2) 这个限制可以在某处配置吗?
3) 为什么这个 Web 请求不能访问全部可用的系统内存?
【问题讨论】:
-
我也遇到过这个问题,我认为操作系统的工作进程有限制,或者 IIS 的工作进程有限制,或者应用程序池有限制。祝你好运:\
-
x86(32 位)是一个痛苦的世界。我知道这有点牵强,但是您可以在 64 位版本的 Windows Server 上运行此代码吗?服务器上的 64 位差不多,我的意思是字面意思,免费性能
-
谢谢 Jeff,x64(和 32GB RAM)距离我们还有 2 个月的时间,所以我们可能只能坚持下去。我喜欢用硬件解决软件问题!
标签: asp.net iis memory-management iis-6