有时我们的网站速度变慢,RAM 使用率大幅上升。然后应用程序池停止,我必须重新启动它。然后几天后RAM突然再次飙升并且应用程序池很快停止。CPU不高。
在应用程序池停止之前,我注意到我们的一个页面总是挂起。它挂在的行是 ResourceSet 上的 foreach :
var englishLocations = Lang.Countries.ResourceManager.GetResourceSet(new CultureInfo("en-GB"),true,true);
foreach(DictionaryEntry entry2 in englishLocations) // THIS LINE HANGS
我们在不同的盒子上部署了相同的代码,但这种情况不会发生。两个盒子之间的主要区别是:
坏盒子
- 窗口服务器 2008 R2 标准 SP 1
- IIS 7.5.7600.16385
- .NET 4.5
- 24GB 内存
好盒子
- 窗口服务器 2008 服务器 SP 2
- IIS 7.0.6000.16386 SP 2
- .NET 4.0
- 24GB 内存
我已经尝试将 uploadReadAheadSize="0" 添加到 web.config 中,如下所述:
这没有用。
为什么 foreach 会挂起?它挂在第一个项目上,实际上是在 foreach 上。
谢谢。