IIS 8应用程序池启动30分钟+启动,不响应请求

时间:2013-10-13 22:25:26

标签: asp.net-mvc-3 iis autostart

操作系统:Windows Server 2012 Standard

IIS:8.0.9200.16384

处理器:4x Xeon 2.67Ghz CPU

RAM:40GB

问题:

我们最近启用了IIS的AutoStart功能,因为这样做我们的应用程序池的启动时间大大增加了。应用程序池似乎正在运行,但似乎在大约30分钟内将其CPU使用率提高到最大25%,并且在该池中运行的网站在完成之前不会响应。我们检查了事件日志,但似乎没有任何故障。我们检查了预加载功能中的记录,这似乎只需要60-90秒。

我们如何诊断导致应用程序池启动延迟的原因?

背景

我们从多个应用程序池(每个池20个站点)提供相同ASP.Net MVC3应用程序的多个副本。我们有大约8个池服务160个站点我们建立了IProcessHostPreloadClient,它在站点启动时从数据库预加载一些设置。我们有第二台服务器具有相同的基本规格,但只有3个20个池,每个池只需要大约5分钟即可启动。

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,我们采取了解决/缓解问题的方法:

  1. 将每个应用程序池中的站点拆分为较小的分组(这会减少每个应用程序池的启动时间)。我们每个游泳池有10个站点。
  2. 更改为使用IIS 8 Application Initialize'PreloadEnabled'选项而不是serviceAutoStartProvider进行站点初始化。
  3. 部署新代码时,请勿重新启动应用程序池,而是使用app_offline.htm功能卸载应用程序并重新启动它。
  4. app_offline.htm功能是我们的关键功能,这意味着我们可以部署新版本的软件,而无需停止和启动应用程序池,从而导致启动时间损失。此外,逐步重新启动应用程序池有助于减轻CPU的压力,这意味着我们可以为每个池提供一致的启动时间。只有在我们进行IIS重置或服务器重启(很少)时才需要这样做。