【问题标题】:.NET Core Web Api on AWS Lambda is slow upon first requestAWS Lambda 上的 .NET Core Web Api 在第一次请求时很慢
【发布时间】:2019-12-05 17:32:43
【问题描述】:

我在 AWS Lambda 上部署我的 .net core 2.1 应用程序,我正在使用 AspNetCoreServer 包代理路由到我的控制器,我发现这个解决方案存在问题,在我的第一个请求中,lambda 执行速度非常慢动作控制器,但在其他请求中很快,我查看 CloudWatch 日志以了解发生了什么,我在日志中看到最长的时间是在 ControllerActionInvoker: Route Match 调用我的动作,我想知道我是否做错了什么或.net 核心对于 aws lambda 是不是很慢。

我的日志证据:

这是我的第一个请求日志:

我的第二个请求日志:

谢谢

【问题讨论】:

  • 嗨卢卡斯。只是好奇,2 年后,在 lamdbas 后面托管 asp.net core web api 时,您是如何最终将请求时间最小化的?

标签: amazon-web-services .net-core aws-lambda serverless-framework serverless


【解决方案1】:

事实上,第一个慢请求不仅是 lambda 冷启动造成的。 使用 lambda 中的 .Net Core,您有 2 个冷启动:lambda 本身的冷启动和 .net 核心本身的冷启动。 为了避免这两个冷启动,您必须:

  • Lambda 冷启动:通过每 5 分钟调用一次 Lambda 来预热它
  • .Net Core 冷启动:通过在启动时调用所有端点来预热您的 .Net Core api

请参阅此github issue 以了解有关 .Net Core 中第一个慢速请求的更多信息(仍然希望在下一个 dotnet core 版本中修复或更好地管理此问题,但现在您没有更好的选择)

【讨论】:

  • 在当今的 AWS 生态系统中,这些建议是否仍然有效?在 lambda 之后托管的 asp.net 核心应用程序中调用 api 端点时,确保将延迟最小化的建议是什么?我最近发现我可以将 lamdba 用于 asp.net core web api,但是听到上级对引入的延迟的担忧(3 秒?真的吗?)我的意思是,1 秒可能是合理的,但我可以看到多秒造成障碍使用这种方法。 AWS 是否提高了这个速度?
【解决方案2】:

冷启动(第一次 lambda 调用)不是 .Net Core 的具体问题。 您可以在this article 中找到不同语言的时间比较。

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2012-11-19
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多