应用程序暂停IIS应用程序池.Net 4.5.1

时间:2013-11-21 11:15:54

标签: .net iis

我刚刚在msdn上阅读了一篇博客,其中.Net 4.5.1引入了新的应用程序池设置App Suspend。在什么情况下你想将你的应用程序池设置为“暂停”而不是“终止”,反之亦然?如果“暂停”空闲模式是比终止更好的设置,那么为什么不默认为挂起并摆脱“终止”空闲模式。

1 个答案:

答案 0 :(得分:9)

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

应用程序池的部分构建方式,默认情况下是"再循环"或经常重启以避免应用程序崩溃或重置内存泄漏。

导致应用程序池回收的主要方法有三种:

  1. 基于时间间隔(默认设置为每29小时)
  2. 无响应(通过IIS检查应用程序性能衡量)
  3. 配置更改(更改web.config或应用程序池设置)
  4. 回收并不是什么大问题,因为IIS会在终止旧流程之前创建新流程并转移请求,因此服务请求没有差距。 但是,如果没有一定时间的请求(默认为20分钟),则应用程序池有一个设置将完全终止该过程。

    当应用程序池关闭并且有新请求进入时,工作进程启动会有几秒钟的显着延迟,加载.NET框架,编译应用程序中的任何页面并最终提供服务请求。这被称为"冷启动"并且可能会给用户带来糟糕的体验。

    您可以根据需要禁用回收设置和基于超时的终止选项(我会为几个大型应用程序执行)但是如果您在单个服务器上运行大量站点,则不能获得大量持续流量,您可以通过使用新的" Suspend"来节省资源。选项。

    而不是完全终止进程,而是将IIS移动到内存非常低的状态。这样,如果有新请求进入,您的应用会立即启动。没有滞后。但是当没有流量时,它只使用一小部分内存而没有CPU,因此服务器上没有开销。

    它真正适用于运行大量网站的服务器的共享环境。如果您有持续的流量,您将无法注意到差异,因为应用程序池永远不会停止但是如果您坚持使用默认设置,我强烈建议您将App Pools设置为Suspend模式。 请注意,这需要Windows Server 2012 R2和.NET 4.5.1才能正常工作。

    这是一个Youtube视频,它从Visual Studio团队进一步解释: https://www.youtube.com/watch?v=hXw5gyqTxoo