我们最近将我们的网站从 IIS 7.5 移至 IIS 8.5。
- 我们没有更改网站的任何代码
- 应用程序池的配置相同
- 我们在此服务器上运行约 70 个站点
- 旧服务器有 6 GB 内存,双 2.4 GHz 处理器
- 新服务器有 12 GB 的 RAM 和 3 核 2.4 GHz 处理器
- 新旧服务器均为:
- 虚拟机
- 使用应用程序结构实现会话状态
- 64 位
- 安装相同版本的.NET(4.5.2)
在我们的旧服务器上,我们从未遇到过内存问题。
新服务器的初始内存为 6GB,但出现了内存不足的情况。我们不断增加内存,直到服务器变得更加稳定。
在我们的旧服务器上,我们通常会看到 70-75% 的 RAM 利用率。
在新服务器上,我们通常会看到 98-99% 的 RAM 利用率,无论服务器上的 RAM 有多少。
应用程序池通常使用的内存量是我们以前的服务器的 2-3 倍。
例如,我们有一个应用程序池,它在旧服务器上始终以 350-400 MB 的内存运行。在新服务器上,同一个池以 800 MB - 1.2 GB 的内存运行。
我们搜索了 google、serverfault 和 stackoverflow,查看是否有其他人遇到过类似的情况,但无济于事,如能得到帮助将不胜感激。
答案1
在从 Server 2008 R2 和 IIS 7.5 过渡到 Server 2012 R2 和 IIS 8.5 时,我们遇到了同样的问题。结果发现,在我们的情况下,是 .NET Framework 配置中新配置的设置缺失。需要将性能方案设置为 HighDensityWebHosting (http://www.asp.net/aspnet/overview/aspnet-and-visual-studio-2012/whats-new#_Toc_perf_5)
我们已经设置了它,但由于匆忙之中不小心将其设置为 32 位框架 (Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config),而不是 64 位设置 (Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config)。哎呀。
在获得正确的设置后,我们实际上看到应用程序池在 IIS 8.5 上比 7.5 上占用的 RAM 减少了约 1/3