我已将一个 ASP.NET v4.0 应用程序迁移到在 Win2008 Server x64 操作系统下运行的新服务器。由于当应用程序池设置为“启用 32 位应用程序”= False(在 x64 IIS 上应该是默认设置)时,迁移的 asp.net 应用程序似乎没有问题,所以我让它在 64 位模式下运行。
事实证明,用户会话经常被中断,因为工作进程很快就超过了它的虚拟内存限制。由于这个原因,我只用一个修改设置测试了相同的应用程序和相同的应用程序池——我将“启用 32 位应用程序”切换为 True,让它在“WOW64”模式下运行;其他一切都保持原样。我使用完全相同的用户工作场景比较了两种模式下工作进程消耗的内存量,结果让我有点震惊:
- 工作量消耗大约。在 WOW64 32 位模式下运行时为 150MB
- 在“默认”64 位工作进程模式下,相同的工作负载消耗大约 800MB。
我预计在 64 位模式下工作进程可能会消耗更多内存,但这种差异太大了。
如此巨大的内存影响被认为是正常的吗?是否有可能以某种方式减少/修复它?