【发布时间】: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