在.NET 4.5.1版本中,引入了许多新特性,其中之一就是App Suspend功能。这个功能不仅可以使ASP.NET网站和Web应用程序的响应速度更快,还能让在不影响性能的情况下,在单个服务器上托管更多的网站。本文将解释App Suspend功能是如何工作的,如何在应用程序中实现它,以及使用它可以获得哪些好处。
App Suspend是在.NET 4.5.1中引入的,它实际上是建立在另一个.NET新特性——IIS Idle Worker Process Page-Out——之上的。IIS Idle Worker Process Page-Out选项是在IIS 8.5中引入的,它允许IIS“挂起”可能变为空闲的应用程序,而不是终止它们。这种挂起操作使得这些应用程序可以在将来被请求时非常快速地重新启动,而不是被终止,那样就需要服务器重新启动,经历一个“冷启动”。
当一个应用程序变为空闲时,如果启用了IIS Idle Worker Process Page-Out功能,该应用程序将保持活动状态,并被分页到磁盘中,而不是被终止。当它将来被请求时,该进程将被重新激活并立即可用。
可以看到App Suspend功能与传统的空闲超时操作的不同之处。这个功能的引入将允许服务器上运行的网站或应用程序存在三种不同的状态:
根据服务器及其限制(例如物理内存),不仅可以让挂起站点的启动时间更快,还可以让在环境中运行“更多”的站点,因为挂起的站点占用的内存是活动站点的一小部分。这可能为当前托管大量站点的服务器带来巨大的好处,不仅在资源管理上,也在性能上。
像在IIS中大多数设置和更改一样,IIS管理器对话框可以很容易地找到特定的配置设置并使用它们。可以按照以下步骤在IIS中实现App Suspend:
.NET团队的分析显示,通过这个简单的更改,他们的托管环境取得了杰出的成果,但两个主要好处可以归结为以下几点: