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

时间:2018-06-20 09:00:40

标签: c# .net asp.net-web-api

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

是否存在使控制器保持温暖的通用技术,以免发生这种情况?作为参考,我不使用IIS(据我所知),这些服务使用Microsoft的官方.NET Core Docker映像(不基于Alpine)在Docker中运行。

我还应该指出,这些服务中的控制器在启动时会通过/ready端点进行预热,该端点由Kubernetes调用作为准备情况检查。问题是这似乎不会持续太久。

2 个答案:

答案 0 :(得分:0)

这听起来绝对不是控制器问题。控制器通常是每个请求的新实例。当您在评论中提到Army时,这肯定与Kestrel或控制器无关。

您的问题可能有很多,但是有一些猜测:

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

  • "slow -> 8 seconds, fast -> 300ms"听起来像是您的外部通话速度很慢。也许是Db,外部API或重新认证的东西。

答案 1 :(得分:0)

如果您的经验在您的开发箱/个人计算机中,并且每次启动调试或运行应用程序时都遇到了这种情况,则可能会。但实际上,肯定不是这种情况(除了第一次运行或在回收应用程序池或重新启动服务实例之后)。即使这样,在服务器中,该差异也应该很小。使用.net核心,它甚至应该具有最小的延迟体验。