我有一个在构建服务器上预编译的 MVC 5 ASP.NET 应用程序。部署包中没有可编译元素。此 Web 应用程序在 IIS 7/7.5 上部署时,在内存较小的慢速服务器上 5 秒内即可启动。首次运行时没有内存峰值,网页响应迅速。
但是,在内存更大、IIS 8.5 版本较新的服务器上部署的同一应用程序在首次启动时表现得好像没有编译一样。我看到首次访问所有可用内存时内存峰值很高,在极少数情况下,我遇到了 OutOfMemoryException。
看起来 IIS 8.5 完全忽略了应用程序已经编译的事实并再次执行此操作。有人知道是否有可能解决这个问题,或者我必须停止使用新服务器并返回旧服务器。
更新 1 经过几次测试后,我认为这与 x64 位架构有关。如果我在 IIS 8.5 上设置 AppPool,以 32 位运行,一切都会像在 IIS 7 计算机上一样快。我理解为什么 IIS 进程在 32 位上占用两倍的内存。但不明白为什么编译时间要长 7 倍,编译内存要大 10 倍。
答案1
根据@jeremy-cook 的建议
复制我的回答:
经过几次测试,我认为这与 x64 位架构有关。如果我在 IIS 8.5 上设置 AppPool,以 32 位运行,一切都像在 IIS 7 计算机上一样快。