我怎样才能优化IIS热身与许多网站的服务器? (例如上演热身。)

我们的一些networking服务器托pipe了不less网站。 在日常事件中,这并没有太大的影响,因为所有页面的传输速度相当快,而且服务器资源的尺寸也很合适。

但是,当主机需要重新启动(例如系统更新)时,预热所有站点可能需要相当长的时间 – 有时超过一个小时才能完成所有预热。 据推测,因为超过十个网站试图抢CPU时间进行编译和加载。

在networking上search,更快的热身的build议围绕着一个服务器托pipe只有几个网站的想法,但是有很多服务器的好方法是什么?

我们考虑尝试进行热身,以便在给定的时间没有更多的网站得到处理,而不是CPU有空间 – 意味着最后一个网站可能没有更快准备好,但是第一个网站会很快到达那里。 已经比全有或全无自由了好多了。

IIS是否在IIS启动时提供阶段性的热身?

预编译您的网站将大大减less预热延迟,并且还将避免在编译过程中偶尔发生的一些间歇性竞争状况。 您也可以configurationIIS 8以在更新时立即预加载每个网站,但是如果您的CPU超载,那可能不是一个好的select。 这听起来像你可能只需要更多的CPU。 根据经验,我可以告诉你,如果你的CPU在10分钟的分辨率图上高于75%,你的用户将会遇到令人不快的延迟。

有关如何configuration应用程序预加载,请参阅IIS 8.0应用程序初始化 。

编辑:对于系统重新启动后的预热,仍强烈build议进行预编译,但是有一个不同的configuration选项来启动第一个请求之前的所有站点(请参阅下面的参考资料)。 在IIS 8上,您可能仍然需要执行应用程序级别的启动(它将会打击特定的页面,这样您就可以预热caching并加载dynamic依赖关系,而无需在Application_Start中手动执行此操作。在非高峰负载期间,多台带有负载平衡器的服务器通常是避免用户受到暖机延迟影响的方法,您不必花费昂贵的硬件负载平衡器, 内置到Windows的负载平衡器只是对于小型商店来说很好,当你要开始维护的时候,你要重新启动服务器,等待请求完成(只要你想要),进行维护,然后在负载均衡器中重新启动服务器,然后重复其他服务器,如果你的stream量通过networking广播是一个问题,你可能需要一个单独的networking服务器或处理ICMP的路由器的专用子网。

请参阅为应用程序池configuration自动启动(IIS 7)以了解如何在系统重新启动后configuration自动应用程序启动。

另一件要考虑的事情是,如果编译元素的属性“batch”设置为true,则检查每个站点中的web.config文件。 MSDN文档

这指示asp.net一次(批量)编译您网站上的所有页面,这可能会非常缓慢。 如果将其设置为false,则只有获取请求的页面才会被编译,但只能进行一次。 (除了在/ app_code中的所有内容之前编译)。 所以,你在一堆网站上进行大量的前期编译过程,偶尔会一次性编译一天中需要的页面。 这大大减less了启动时间。

同样,如果有可用的资源,预编译,多个服务器/负载平衡将会很好。