与32位相比,ASP.NET 4.0工作进程在64位内消耗的内存增加了5倍

Mar*_*ena 4 asp.net 64-bit iis-7 wow64 32bit-64bit

我已将一个ASP.NET v4.0应用程序迁移到在Win2008 Server x64操作系统下运行的新服务器.因为当应用程序池设置为"启用32位应用程序"= False(应该是x64 IIS上的默认值)时,迁移的asp.net应用程序似乎没有问题,所以我让它以64位模式运行.

然后事实证明,用户会话经常被中断,因为工作进程很快就会超出其虚拟内存限制.由于这个原因,我只使用一个修改过的设置测试了相同的应用程序和相同的应用程序池 - 我将"启用32位应用程序"切换为True以使其以"WOW64"模式运行; 其他任何东西都保持不变.我使用完全相同的用户工作场景比较了两种模式下工作进程消耗的内存量,结果让我有些震惊:

  • 工作量大约消耗 在WOW64 32位模式下运行时为150MB
  • 并且相同的工作负载在"默认"64位工作进程模式下消耗大约800MB.

我曾预料到工作进程可能会在64位模式下消耗更多内存,但这种差异太大了.

这么大的内存影响被认为是正常的吗?有可能以某种方式减少/修复它吗?

Mar*_*ena 5

经过更多调查后,似乎没有内存问题.新服务器只有更多内存,而在64位操作系统应用程序池上运行时,只允许分配更大的内存资源.它看起来像一个内存泄漏,但由于从一定数量的分配RAM进程停止消耗额外的内存,它似乎根本不是一个内存问题.感谢所有响应者..