【问题标题】:Performance of Consumption-hosted Functions on Azure free subscriptionsAzure 免费订阅消费托管函数的性能
【发布时间】:2018-04-30 19:48:26
【问题描述】:

我正在使用 Azure 免费试用订阅评估 Azure Functions。 除了性能/可扩展性之外,一切都很好。

我开发了一个简单的 http 触发函数(C# 类库),它什么都不做,只是休眠 5 秒。 当直接执行一次时,它就像 5s 一样工作,完全符合预期。 但是当并行调用 500 次时,执行时间会增加到 20-30 秒。

功能在消费计划上“托管”,所以我希望一旦需要,它会“自动”在单独的 VM 上执行。 我检查了 ARR Cookies(可能将我的请求卡在了一个虚拟机上)——不,不 饼干。 一切看起来都很好,至少对于这种简单的情况(没有明显的瓶颈需要检查——没有数据库、没有通信等)。

所以,问题是 - 是因为免费试用订阅,还是我遗漏了什么?

【问题讨论】:

  • 我联系了 Azure 支持团队(通过此处聊天 azure.microsoft.com/en-us/free/free-account-faq)并提出了这个问题。答案是免费试用订阅有资源限制,为了提供可扩展性证明,Azure 技术专家将与我联系,他们将帮助我解决这个问题。将在此处跟踪。
  • 支持人员的回答不正确 - 您将在免费试用子的消耗计划中获得动态缩放。我刚刚做了自己的快速测试,在异步函数中针对 500 个并行请求和 5 秒异步睡眠(等待 Task.Delay(5000)),我看到了类似的延迟。问题归结为这样一个事实,即对于像这样的请求的瞬时峰值,我们的横向扩展逻辑未能足够快地横向扩展 - 所有请求都命中单个实例。我们正在努力进行改进,很快就会发布,这将使我们能够在这种情况下扩大规模。
  • @mathewc,谢谢!有没有办法预先配置最小实例数,或者可以说,在消费计划中“预热”功能应用?
  • 暂时没有,德米特里。您必须通过对其进行预加载来自行预热。

标签: c# azure scalability azure-functions


【解决方案1】:

免费试用订阅上的 Azure Functions 没有区别。你并没有因此而减慢速度。

正如@mathewc 所指出的,这是由于 HTTP 横向扩展存在一些滞后,我们正在努力改进。你可以在这里看到一些你可以控制的旋钮:https://github.com/Azure/azure-webjobs-sdk-script/wiki/Http-Functions#throttling

如果启用限制,将导致 429 秒,但有助于防止增加执行时间。

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 2010-10-25
    • 2018-03-17
    • 2014-05-17
    • 2023-03-26
    • 2016-10-29
    • 2018-12-01
    • 2017-03-03
    相关资源
    最近更新 更多