2013-11-21 104 views
4

我刚刚在msdn上看到一个博客,即.Net 4.5.1引入了新的应用程序池设置App Suspend。在什么情况下,您希望将应用程序池设置为“暂停”而不是“终止”,反之亦然?如果“挂起”空闲模式比“终止”更好,那么为什么不拖延到暂停并摆脱“终止”空闲模式。应用程序暂挂IIS应用程序池.Net 4.5.1

+0

你可能是对SF最好与你的问题。 – nphx

+0

有什么意见吗? – user384080

回答

7

IIS版本6及以上版本使用应用程序池来为网站提供服务。每个应用程序池基本上都是一个单独的工作进程,它将响应您在该应用程序池中拥有的任何网站的请求。它有助于隔离不同的网站(资源使用情况,错误,安全漏洞等)。

应用程序池的结构部分,它们默认情况下是“回收”或重新启动以避免应用程序崩溃或重置内存泄漏。

有迹象表明,导致应用程序池回收方式主要有三种:

  1. 基于时间间隔(默认情况下它被设置为每29小时)
  2. 无响应(由IIS检查应用程序的性能测量)
  3. 配置的改变(改变web.config文件或应用程序池设置)

回收利用是不是一个大问题,因为IIS将创建一个新的进程和传输请求是因此可以终止旧流程,因此在服务请求方面没有任何差距。 但是,如果某个时间段(默认为20分钟)没有请求,则应用程序池将设置为完全终止该进程。

当应用程序池关闭并且有新的请求进入时,工作进程启动,加载.NET框架,编译应用程序中的任何页面并最终提供请求的时间明显滞后数秒。这被称为“冷启动”,可能会给用户带来不好的体验。

如果你想要(如果你需要几个大的应用程序),你可以禁用回收设置和基于超时的终止选项,但是如果你在单个服务器上运行很多站点,的持续流量,您可以通过使用新的“暂停”选项节省资源。

而不是完全终止进程,而是IIS将其移动到非常低的内存状态。这样,如果有新的请求进入,您的应用程序立即启动。没有滞后。但是当没有流量时,它只占用很少的内存,并且没有CPU,因此服务器上没有任何开销。

这实际上意味着共享环境与服务器运行大量的网站。如果你有持续的流量,你不会注意到有什么不同,因为应用程序池永远不会停止,但如果你坚持默认设置,那么我强烈建议将应用池设置为挂起模式。 请注意,这需要Windows Server 2012 R2和.NET 4.5.1才能运行。

这里的YouTube视频从Visual Studio团队进一步解释它: https://www.youtube.com/watch?v=hXw5gyqTxoo

+0

仍然没有得到答案!如果您在专用物理机器上托管您的站点,并且只有一个网站应用程序和一个专用应用程序池,那么为什么不将该应用程序池设置为暂停? – user384080

+1

它已经被回答: - 如果你有持续的流量,应用程序池不会停止。 - 如果您没有固定流量,则可以禁用超时设置,以便应用程序池不会停止。 - 但是,如果您没有固定流量,并且启用了超时设置,那么当设置为“终止”时,应用程序池将完全关闭,这会对站点提出的新请求要慢得多。将其设置为“挂起”将避免完全关闭,因此新请求不会花费太长时间。 如果该选项可用,没有理由不将其设置为“挂起”。 –

+0

只是旁白,因为该帖子提到Windows Server 2012 R2和.net 4.5.1是必需的,实际上它是IIS8.5的一个功能(所以如果你有IIS 8.0,你可以选择...)检查这个:http://www.iis.net/learn/get-started/whats-new-in-iis-85/idle-worker-process-page-out-in-iis85 –