应用程序挂起IIS应用程序池.Net 4.5.1



我刚刚在msdn中读到一篇博客,其中.Net 4.5.1引入了新的应用程序池设置app Suspend。在什么情况下,您希望将应用程序池设置为"挂起"而不是"终止",反之亦然?如果"挂起"空闲模式的设置比"终止"好得多,那么为什么不默认为"挂起并取消"终止"空闲模式呢。

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

作为应用程序池结构的一部分,它们在默认情况下被"回收"或每隔一段时间重新启动一次,以避免应用程序崩溃或重置内存泄漏

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

  1. 基于时间间隔(默认设置为每29小时一次)
  2. 无响应(通过IIS检查应用程序性能来衡量)
  3. 配置更改(更改web.Config或应用程序池设置)

回收并不是什么大不了的事,因为IIS会创建一个新进程,并在终止旧进程之前传输请求,所以在服务请求方面没有差距但是,应用程序池有一个设置,如果在一定时间内没有请求(默认为20分钟),该设置将完全终止进程

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

如果您愿意,您可以禁用回收设置和基于超时的终止选项(我对几个大型应用程序也是这样做的),但如果您在一台服务器上运行许多站点,而这些站点没有获得大量连续流量,则可以使用新的"挂起"选项来节省资源

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

它真正适用于服务器运行大量站点的共享环境如果流量恒定,你不会注意到有什么不同,因为应用程序池永远不会停止,但如果你坚持默认设置,我强烈建议将应用程序池设置为挂起模式请注意,这需要同时使用Windows Server 2012 R2和.NET 4.5.1

以下是来自Visual Studio团队的Youtube视频,对其进行了进一步的解释:https://www.youtube.com/watch?v=hXw5gyqTxoo

最新更新