繁体   English   中英

在ASP.NET Core Web API项目中保持控制器的温暖

[英]Keeping controllers warm in ASP.NET Core Web API project

我注意到,经过一段时间后,我的ASP.NET核心Web API服务似乎经历了相同的初始化过程,当您重新启动它们时,即初始请求很慢,但后续请求很快。

有没有一种保持控制器温暖的常用技术,所以这不会发生? 作为参考,我没有使用IIS(据我所知),这些服务使用微软的官方.NET Core docker镜像(不是基于Alpine的)在Docker中运行。

我还应该指出,这些服务中的控制器在启动时通过/ready Kreadynetes调用的/ready端点进行预热,作为准备检查。 问题是,这似乎并没有特别长。

这肯定听起来不像控制器问题。 控制器通常是每个请求的新实例。 当你在评论中提到"slow -> 8 seconds, fast -> 300ms"时,这绝对不是Kestrel或控制器相关的。

你的问题可能是任何问题,但这里有几个猜测:

  • 如果您在Windows中运行应用程序(如Azure应用程序服务),则它在IIS下运行。 您可能需要检查IIS和托管设置。 如果某个主机是“廉价”层,则会暂停您的Web服务。

  • "slow -> 8 seconds"这老实说听起来像你的外部呼叫很慢。 也许是Db,外部API或重新验证的东西。

如果您的开发盒/个人计算机有这种体验,并且每次开始调试或运行应用程序时都经历过这种体验,它可能会。 但实时情况肯定不是这样(除了第一次运行或应用程序池被回收或服务实例重新启动之外)。 即便如此,在服务器中,这种差异应该非常小。 使用.net核心,它应该是最小的延迟体验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM