当前位置: 首页 > 知识库问答 >
问题:

Azure功能对消费计划冷启动可长达30分钟

平航
2023-03-14

我有一个azure函数v3,用C#写的,用类库的方法。

    < li >该功能由blob存储触发。 < li >该功能正在使用消费计划。

问题是冷启动可能长达30分钟!我已经查阅了这个链接的文档

但是没有关于预期冷起动正时的具体数字。

一个有趣的观察是,如果我导航到门户,并点击刷新按钮:

那么该功能会立即被触发。

  1. 这是正常的预期行为吗
  2. 您能给我指一下任何明确说明消费计划中冷启动时间为0-30-50分钟的文件

共有3个答案

唐睿
2023-03-14

这是不正确的,你指的是超时时间——它不等同于冷启动。如果你的函数花了这么长时间,它的原因是异常/错误(我不是说代码中的异常)。在任何留档中(即使是微软)都没有说冷启动需要30分钟。

如果冷启动时间过长(

最后,没有确切的数字-它是这样的每次使用的基础。有许多因素会影响执行时间——这可能会导致人们责怪冷启动,而不是责任

我肯定想知道的是,如果代码作为代码发布到Azure函数,与docker中的代码相比,性能差异(尤其是冷启动)(https://docs.microsoft.com/en-us/azure/devops/pipelines/targets/function-app-container?view=azure-德沃斯

延伸阅读 -

    < li >原始冷启动正时研究:https://mikhail.io/serverless/coldstarts/azure/(他已经用AWS Lambda进行了相同的实验) < Li > Lambda的另一个很好的对比研究

编辑:虽然这是一个稍微旧的Github问题线程,但此线程上报告的最大冷启动时间约为2分钟;平均时间似乎在20秒左右。请注意,当时微软Azure的工程经理(David Ebbo)提到,对于琐碎的功能,它不应该超过10秒。https://github.com/Azure/azure-functions-host/issues/838

编辑2:30分钟的超时持续时间是针对非消耗计划的(5分钟的消耗计划),所以我假设你计划使用非消耗计划,在这种情况下,你不会有冷启动问题。其他计划使功能保持温暖。请浏览您链接的文档中的“计划概述” - https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans

钱元徽
2023-03-14

通常,当功能在大约20分钟内未运行时,会发生冷启动

为了避免这种情况,如果您足够频繁地运行代码,使其保持温暖,则不会发生冷启动(除非您扩展)

执行此操作的一种常见方法是创建一个简单的“invoker”帮助程序函数,该函数每5/10分钟调用一次函数

如果这不适合您的解决方案,并且您可以支付稍多的费用,您可以在专用计划中运行您的函数。

关于消费计划的SLA:

“Unavailable Executions”(不可用执行)是在总触发执行中未能运行的执行总数。当触发器成功触发五(5)分钟后,给定函数应用程序历史记录未捕获任何输出时,执行失败。

钱远
2023-03-14

消费计划是azure所说的“无服务器”模型;这意味着什么 -

你的代码会对事件做出反应,有效地横向扩展以满足你所看到的任何负载,在代码未运行时进行缩减,并且你只需为使用的内容付费。

冷启动不过是

未使用的应用程序需要更长时间才能启动的现象。

使用使用计划时,会根据传入事件的数量动态添加和删除Azure Functions主机的实例。

如果您在消耗计划上编写和部署了“重量级”代码,需要大量内存和资源才能加载执行,则可能需要更多时间,例如您的情况。当您从门户中点击刷新按钮时——函数运行时重置,任何所需的扩展都会加载到工作程序并加载到内存中。这就是为什么它减少了大部分延迟。

详细了解 Azure 无服务器模型中的冷启动

减少更多;你可以有一个基于时间间隔的预热请求,你可以让你的函数总是加载在内存中。

 类似资料:
  • 在过去的14个月里,我有一个Azure功能运行没有问题。每当在blob存储容器中创建新的blob时,它都使用BlobTrigger来运行。BLOB是间歇性创建的,因此该功能几乎完全依赖于冷启动(无需考虑延迟)。然而,截至一周前,BlobTrigger不再启动冷启动(如中所示,3天后该功能仍然没有运行)。但是当我访问门户中的功能时。为了唤醒它,BlobTrigger会为存储中的每个blob触发一次。

  • 问题内容: 我的Azure函数具有以下function.json,其日程表设置为每天9.30运行。我想要的是动态设置此json 的属性。当正在使用我的应用程序的客户端输入日期时,就会出现这种情况,该日期计划程序应该运行。 这可能吗? (还请注意,由于预算原因,我不想使用Azure Scheduler) 问题答案: 使用Kudu API更改function.json https://github.c

  • 通过门户创建 Azure 函数应用时,无法选择是使用现有消耗计划还是创建新消耗计划。 但是,可以通过 ARM 模板执行此操作。 Azure 函数应用:在同一消耗计划下组织 Azure 函数应用对此进行了讨论,但它确实没有任何影响。 消费计划和功能应用程序之间的一对一映射与单个计划中的多个应用程序之间有什么实际区别?

  • 我正在阅读Kafka常见问题解答,他们如下所示。 •每个分区不会被每个使用者组中的多个使用者线程/进程使用。这允许每个进程以单线程方式使用,以保证分区内的使用者的顺序(如果我们将有序消息分割成一个分区并将它们传递给多个使用者,即使这些消息是按顺序存储的,它们有时也会被无序地处理)。 有没有可能,

  • 我分组和分区流如下: 有没有办法把这两者结合起来?我尝试将两者结合使用,并在PartionBy中使用groupingBy,但没有成功。有什么建议吗? 预期的结果是将这些人与以P开头的人分开,并按年龄分组。以下是人员名单:

  • 我想使用PayPal REST API在我的网站上提供订阅。根据该文件,为了与用户创建计费协议,需要计费计划。 虽然文档解释了如何创建计费计划/协议,但我仍然有一些问题文档没有回答: 计费计划是否用于多个计费协议?例如,您为网站上的每个服务创建一个计费计划,并让用户订阅 每个计费协议是否需要新的计费计划?(与上一个问题相反) 如果删除计费计划,是否也会删除所有相关的计费协议