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

时间:2012-04-03 12:40:14

标签: asp.net iis-7 64-bit 32bit-64bit wow64

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

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

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

我原本预计工作进程可能会在64位模式下消耗更多内存,但这种差异太大了。

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

1 个答案:

答案 0 :(得分:5)

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