某些应用程序池在首次加载时非常慢

时间:2013-04-02 15:15:50

标签: asp.net .net-4.0 application-pool

following article中所述,某些.NET应用程序池在第一次请求时变得非常慢(大约x4次)。问题仅涉及应用程序池。其中一些是慢的,一些不在相同的条件:Web应用程序,配置,文件权限等。

  

所以我的问题是,这怎么可能发生?一个应用程序池如何变得比具有相同设置的其他应用程序池慢,即使重新启动它们之后又有办法修复/阻止它吗?一旦应用程序池变慢,它就不会再次变快,即使停止并启动它也是如此。

     

我确保在每次测试之前回收应用程序池,以便所有测试都是“第一次请求”。

我发现了同样的问题,并想知道是否有人在这里找到解决这个奇怪问题的方法?

请注意,这不是asp.net初始化速度的一般问题。我们将同一服务器上的相同代码与两个应用程序池进行比较:通用(快速)和损坏(慢)。在两个相同(相同)的平凡(没有任何数据库访问等)之间切换两个应用程序池(相同的设置,但一个不合理的“慢”)测试asp.net应用程序改变它们的行为:一个开始非常慢,另一个 - 不是。

问题是:

  • 为什么应用程序池突然崩溃(慢)?
  • 如何避免应用池变得“慢”?
  • 如何修复损坏的应用池?是的,我们可以创造 无限的新应用程序池,但无论如何,它是奇怪的,不可接受的 生产环境。
UPD:我注意到这个问题甚至不是“缓慢的”应用程序池本身,而是ITS NAME!如果您重命名“慢”应用程序池,它将再次“快速”。如果您创建名为先前重命名(或删除)“慢”的新应用程序池,则此应用程序池再次变慢!

3 个答案:

答案 0 :(得分:2)

我有一个类似的问题,我有一个应用程序池,正在生成WCF错误,说它处于故障状态。我尝试创建一个新的应用程序池并测试相同的代码,它工作正常。然后我删除了旧的应用程序池并将新的应用程序池重命名为旧的应用程序池并返回问题!因此,似乎有一些东西被保存在与应用程序池相关的某个地方,当删除应用程序池时不会被删除。非常奇怪..通过将其重命名为其他任何东西,它再次起作用。但是,如果我将其更改回原来的名称,它会抛出错误!我只希望我们不必继续更改应用程序池名称..

答案 1 :(得分:1)

洛尔。这有点像你开始拉动割草机。要执行初始请求并初始化数据库,需要一些时间。每次我们在sharepoint服务器上进行IIS重置时,我们都会注意到这一点。它必须采取web.config,连接到数据上下文或数据库,在站点开始发出请求之前做大量的事情。一旦运行并拥有所有组件和运行时,尽管它很顺利。通常做好维护是需要在晚上或非工作时间进行iisreset,所以当用户第一次上车时,它会更快。你想要的最后一件事是你的CEO或副总裁,他是第一个访问你网站的人。

另外在旁注中,您拥有的应用程序池越多,所需的内存就越多。我知道使用SharePoint应用程序池,每个池需要250MB内存。减少使用和资源消耗的最佳选择是将其分配到多个Web服务器场/集群中,该集群执行某种循环或请求的负载平衡。在给定点点击的用户越多,初始请求就越慢。

答案 2 :(得分:0)

默认情况下,应用程序池在一段时间后设置为回收。我认为默认是20分钟。回收后,必须在第一次请求时重新加载。这可能就是你所经历的。