我正在使用队列触发器进行azure函数的演示。我创建了一个递归的数独求解器,以显示如何进行深度优先搜索并转换为使用排队递归。代码位于github。
我希望它能够逐步扩展并处理每秒疯狂的消息数量,但它几乎没有处理30 / s。队列正在填满,利用率似乎很小。
如何从中获得更好的表现?我尝试在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 消息。
答案 0 :(得分:0)
Azure 函数不会侦听要添加到队列中的项目,它们实际上使用轮询算法来创建队列,您可以使用 maxPollingInterval 属性覆盖该算法。 将 "maxPollingInterval": "00:00:01" 添加到您上面已经提到的选项应该可以解决您的问题。