我正在尝试消除(或至少最小化).NET应用程序的启动/预热时间。我不确定如何做到这一点,尽管这是一个普遍关注的问题。
有很多关于.NET应用程序启动缓慢的问题。这些很容易通过池循环,工作进程启动,.aspx文件的动态编译,JIT等来解释。此外,还有更多的东西可能需要在应用程序中初始化,如EntityFramework和应用程序缓存。
我发现了很多不同的解决方案,例如:
但是,我对上述任何解决方案都不满意。此外,我正在将我的应用程序部署到Azure网站(在大多数情况下),因此我对IIS的访问权限有限。
我知道有一些自定义的“预热脚本”使用各种方法向应用程序发送请求(例如wget / curl)。我的想法是在我的每个ASP.NET应用程序中创建一个“Warmup.aspx”页面。然后我有一个热身服务,每隔5分钟就会向每个站点的Warmup.aspx发送一个HTTP GET。此服务可以是Azure中的WorkerRole,也可以是内部部署安装中的Windows服务。 Warmup.aspx将执行以下操作:
所以,我的最后一个问题是,是否有比“Warmup.aspx”脚本更好的选择?这是一个好方法还是你推荐其他方法?我真的想要一些能够处理上述标准的官方方法。
欢迎提出任何建议,谢谢!
答案 0 :(得分:1)
您是否尝试过此处描述的IIS自动启动功能?
答案 1 :(得分:0)
您可以拥有该网站的两个实例。当您需要部署新版本并因此需要启动周期时,从负载均衡器轮换中删除一个实例,部署并启动它,将其设置为并执行相同的操作2.滚动部署。