Azure功能队列触发器落后

时间:2017-07-16 18:10:54

标签: azure azure-functions azure-storage-queues

我正在使用队列触发器进行azure函数的演示。我创建了一个递归的数独求解器,以显示如何进行深度优先搜索并转换为使用排队递归。代码位于github

我希望它能够逐步扩展并处理每秒疯狂的消息数量,但它几乎没有处理30 / s。队列正在填满,利用率似乎很小。

Minimal utilization

如何从中获得更好的表现?我尝试在host.json中增加批量大小,但似乎没有帮助。我在队列中有超过 200k 的消息并且它正在增长。

更新1 我尝试将host.json文件设置为

{
  "queues": {
    "visibilityTimeout": "00:00:10",
    "batchSize": 32,
    "maxDequeueCount": 5,
    "newBatchThreshold": 100
  }
}

但每秒请求保持不变。

我将相同的功能部署到另一个实例,但将其绑定到S4服务计划。这能够每秒处理大约64个请求,但看起来仍然很慢。

我可以比这更快地在本地串行处理消息。

更新2

我将S4缩放到10个实例,每个实例每秒处理大约60-70个请求。但是,如果仍然无法在本地使用单个核心进行快速处理,那将是非常昂贵的。与服务计划功能一起使用的队列已堆积 500k 消息。

1 个答案:

答案 0 :(得分:0)

Azure 函数不会侦听要添加到队列中的项目,它们实际上使用轮询算法来创建队列,您可以使用 maxPollingInterval 属性覆盖该算法。 将 "maxPollingInterval": "00:00:01" 添加到您上面已经提到的选项应该可以解决您的问题。

maxPollingInterval azure documentaiton