我刚刚读了msdn中的博客,.Net 4.5.1引入了新的应用程序池设置“App Suspend”。在什么情况下,您要将应用程序池设置为“挂起”而不是“终止”,反之亦然?如果“挂起”空闲模式比“终止”设置好得多,那么为什么不默认为“挂起”并摆脱“终止”空闲模式呢?
最佳答案
IIS 6和更高版本使用应用程序池来服务网站。每个应用程序池基本上都是一个单独的工作进程,该进程将响应您在该应用程序池中拥有的任何网站的请求。它有助于将不同的网站彼此隔离(资源使用,错误,安全漏洞等)。
应用程序池的结构方式的一部分,默认情况下,它们经常“回收”或重新启动,以避免应用程序崩溃或重置内存泄漏。
导致应用程序池回收的三种主要方法:
回收不是什么大问题,因为IIS将在终止旧进程之前创建一个新进程并传输请求,因此在处理请求方面没有任何差距。 但是,对于应用程序池有一个设置,如果在一定时间内(默认为20分钟)内没有请求,该设置将完全终止该过程。
当应用程序池关闭并收到新请求时,工作进程将启动,加载.NET框架,编译应用程序中的任何页面并最终为请求提供服务,这会明显延迟几秒钟。这被称为“冷启动”,可能会给您的用户带来不良的体验。
如果您想要(我对多个大型应用程序都这样做),则可以禁用回收设置和基于超时的终止选项,但是如果您在一台服务器上运行很多站点而无法获得大量连续流量,您可以使用新的“暂停”选项来节省资源。
IIS并未完全终止进程,而是将其移到了内存很低的状态。 这样,如果收到新请求,您的应用程序将立即启动。没有滞后。但是,当没有流量时,它只使用一小部分内存和CPU,因此服务器上没有任何开销。
这实际上是用于服务器运行大量站点的共享环境。 如果您的流量恒定,那么您将不会注意到差异,因为应用程序池永远不会停止,但是如果您坚持默认设置,那么我强烈建议将应用程序池设置为挂起模式。 请注意,这需要Windows Server 2012 R2和.NET 4.5.1才能运行。
这是一个Youtube视频,来自Visual Studio团队进一步对其进行了解释:
https://www.youtube.com/watch?v=hXw5gyqTxoo
关于.net - 应用程序暂停IIS应用程序池.Net 4.5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20119444/