为了加快ASP.NET MVC应用程序的反应时间,我们希望在应用程序安装后(或在应用程序池被回收之后)"预热"应用程序.应从SQL Server数据库中提取一些常用的查找数据,并将其存储到System.Runtime.Caching.MemoryCache.NET提供的全局对象中.
对于您的ASP.NET应用程序具有专用IIS的专用VM的情况,我首先将应用程序池设置为"始终运行" - 这是步骤#1.
鉴于这种情况,我看到有两种选择:
应用程序热身,如Scott Gu基于System.Web.Hosting.IProcessHostPreloadClient界面的博客文章所述.如果我理解正确,此代码在应用程序池启动时以及在第一个请求被接受到应用程序之前运行
使用该Application_Start事件global.asax.cs.如果我理解正确,当第一次启动应用程序时,此事件只被调用一次(这将在安装后自动发生,因为应用程序池设置为"始终运行" - 对吗?)
那么 - 鉴于此设置 - 这是"预热"您的应用程序的首选方式?这两种方法之间是否存在显着差异?当采用一种方法而不是另一种方法时,我需要注意什么?
感谢您提供任何输入,提示,警告或更详细解释的链接!
我的任务是预热在 ECS 上部署的 Docker 容器内运行的 ASP.Net Core 应用程序。看起来,使用 Kubernetes,我们可以定义一个就绪检查路径,Kubernetes 首先将请求发送到该路径,并且只有在请求完成后才开始发送实际流量。
ECS 上有同等功能吗?
关于此问题但可以在 Kubernetes 中解决的参考: https://blog.markvincze.com/running-asp-net-core-in-auto-scaling-containers-warm-up/