提升应用程序性能:App Suspend功能详解

在追求应用程序性能优化的道路上,开发者们总是在寻找能够提升应用响应速度和资源利用率的方法。本文将探讨.NET 4.5.1版本中引入的一项新特性——App Suspend,这项功能在Windows Server 2012 R2上尤为有效。通过启用App Suspend,可以显著减少应用程序的启动时间,并在同一服务器上托管更多的网站,而不会牺牲性能。

App Suspend是什么?它是如何工作的?

App Suspend是.NET 4.5.1版本中新增的一项特性,它基于另一个相对较新的.NET特性——IIS Idle Worker Process Page-Out。这项特性允许IIS“挂起”那些可能变得空闲的应用程序,而不是终止它们。当应用程序在未来被请求时,它可以非常快速地重新启动,而不是经历一个“冷启动”过程。

当应用程序处于空闲状态时,如果启用了IIS Idle Worker Process Page-Out功能,应用程序将保持活动状态,并被分页到磁盘上,而不是被终止。当它在未来被请求时,该进程将被重新激活并立即可用。

通过这种方式,服务器上运行的网站或应用程序可以处于三种不同的状态:

  • 非活动站点:完全处于非活动状态的网站。它们当前没有加载到内存中,当被请求时需要“启动”。这是网站在被访问前处于的默认状态。
  • 活动站点:当前正在运行、被访问且未空闲退出的网站。它们正在积极使用系统资源,如内存和CPU周期。
  • 挂起站点:可能之前正在运行,并通过App Suspend被“分页出”到内存并挂起的网站,等待被“重新激活”。挂起的网站接收到的CPU周期和系统内存要少得多,这些资源可以分配给需要的其他活动网站。

根据服务器及其限制(例如物理内存),不仅可以实现挂起站点的更快启动,还可以在同一环境中运行“更多”的网站,因为挂起的网站占用的内存只是活动网站的一小部分。这可能为当前托管大量网站的服务器带来巨大的好处,不仅在资源管理上,也在性能上。

如何启用App Suspend

与IIS中的大多数设置和更改一样,IIS管理器对话框可以轻松找到特定的配置设置并使用它们。要实现App Suspend,请按照以下步骤操作:

  1. 打开IIS管理器(可通过控制面板 > 管理工具 > Internet Information Services (IIS) Manager访问)。
  2. 在左侧点击想要针对的应用程序池。
  3. 在右侧右键单击想要启用App Suspend的应用程序池。选择上下文菜单中的“高级设置”选项。
  4. 找到“Idle Time-Out Action属性”并将其设置为“挂起”。
  5. 可选:为了测试目的,可以将空闲超时(分钟)属性更改为非常短的时间段,以确保它正常工作。(可以检查事件查看器,以查看应用程序是否正确“挂起”)。

预期效果

.NET团队通过对托管环境进行这种简单的更改,看到了显著的结果,但主要的两个好处可以归结为以下几点:

  • 显著增加的启动时间:可以合理期望运行App Suspend的应用程序的启动时间减少高达90%。
  • 改进的托管密度:由于挂起应用程序的存储方式,它们使用的资源只是正常情况下的一小部分。这可以让将之前可以托管的网站数量增加高达7倍。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485