Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心Web API项目中的控制器保温_C#_.net_Asp.net Web Api - Fatal编程技术网

C# ASP.NET核心Web API项目中的控制器保温

C# ASP.NET核心Web API项目中的控制器保温,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,我注意到,一段时间后,我的ASP.NET核心Web API服务似乎经历了与新启动时相同的初始化过程,即初始请求很慢,但后续请求很快 有没有一种让控制器保持温暖的通用技术,这样就不会发生这种情况?作为参考,我没有使用IIS(据我所知),这些服务在Docker中使用Microsoft官方的.NET Core Docker映像运行(不基于Alpine) 我还应该指出,这些服务中的控制器在启动时通过Kubernetes调用的/ready端点进行预热,作为就绪检查。问题是,这似乎不会持续很长时间。这听起来

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

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


我还应该指出,这些服务中的控制器在启动时通过Kubernetes调用的
/ready
端点进行预热,作为就绪检查。问题是,这似乎不会持续很长时间。

这听起来绝对不像是控制器问题。控制器通常是每个请求的新实例。当你在评论中提到
“慢->8秒,快->300毫秒”
时,这肯定与红隼或控制器无关

你的问题可能有很多,但这里有一些猜测:

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

  • “慢速->8秒”
    这听起来确实像是你有一个很慢的外部呼叫。可能是数据库、外部API或其他重新验证的东西


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

慢到底有多慢?快是多快?你需要等待多久,直到快变慢?您是在单个客户机上还是在多个客户机上看到它?可能与DNS有关吗?我不确定是否与microsoft docker有关,但如果您使用IIS,您可以参考此链接。也许你可以在你的应用程序中找到一些类似的设置。如果你能提供一个这样我们就可以看到有问题的控制器及其依赖项,那就太棒了。@mjwills还没有,但是,我仔细检查了Npgsql文档,发现默认情况下,它将在5分钟后关闭空闲连接,因此我认为这可能是根本原因。需要配置文件来确认。这不只是因为本机C#JIT编译器吗?