缩放队列触发的azure函数的并行实例数

时间:2017-08-31 22:49:32

标签: azure azure-functions

我正在努力更好地了解azure功能扩展在消费计划中的运作方式。

我一直在测试一个在存储队列中插入1000条消息的应用程序,它会触发用C#编写的azure函数。

该函数下载文件并对其执行一些处理。完成每个请求大约需要20秒。

在消费计划上运行该功能,我发现完全耗尽队列需要10分钟。配置每个函数实例一次只处理一个队列消息,我原本期望为1000条消息启动1000个实例,但情况似乎并非如此。

在App Insights上使用Live Metrics Stream,我从未见过运行实例的数量超过30个。

是否期望这种吞吐量?作为参考,这是我在函数的host.json中的队列配置:

 "queues": {
    "maxPollingInterval": 2000,
    "visibilityTimeout": "00:00:30",
    "batchSize": 1,
    "maxDequeueCount": 5,
    "newBatchThreshold": 1
  }

可以提供有关扩展功能的任何信息,或者建议在此获得更好的吞吐量。

2 个答案:

答案 0 :(得分:0)

首先,我们可以通过在host.json中设置batchSize来指定要并行检索和处理的队列消息数(每个作业函数)。如果您只想检索和处理单个队列消息,就像您一样,可以将batchSize设置为1。

此外,当我们使用消费计划时,将根据传入事件的数量动态添加和删除Azure功能主机的实例。在它扩展期间,一些队列消息已被处理并从队列中删除,因此它不会扩展到1000个实例。有关详细信息,请参阅Azure Functions Consumption and how it works

答案 1 :(得分:0)

我发现,多功能应用程序的扩展性比单个应用程序更好。此外,消费层中最多有200个实例的上限。通常,我从没见过功能这么高。

此处有更多信息:https://www.syntaxsuccess.com/viewarticle/scaling-queue-triggered-azure-functions

相关问题