是否可以限制并行运行的最大函数数?
我阅读了文档并遇到了这个:
当多个触发事件发生得比单线程函数运行时可以处理它们更快时,运行时可以并行多次调用该函数。
如果功能应用正在使用消费托管计划,则功能应用可以自动扩展。功能应用程序的每个实例,无论应用程序是在消费托管计划上运行还是在常规App Service托管计划上运行,都可以使用多个线程并行处理并发函数调用。
每个函数应用程序实例中的最大并发函数调用数根据所使用的触发器类型以及函数应用程序中其他函数使用的资源而有所不同。
https://docs.microsoft.com/en-gb/azure/azure-functions/functions-reference#parallel-execution
我正在使用带有Event Hub输入绑定的App Service计划上的Function,并且在我的Function App中只有一个Function。如果我不能限制它,有没有人知道这种设置的并发函数调用的最大数量是多少?
答案 0 :(得分:14)
没有办法为Event Hubs触发的函数指定最大并发数,但您可以将批量大小和提取选项控制为described here。
最大并发调用数也可能因工作负载和资源利用率而异。
如果需要并发限制,这是(当前)您需要处理的内容,以下帖子讨论了您可能会觉得有用的一些模式:
Throttling Azure Storage Queue processing in Azure Function App
Limiting the number of concurrent jobs on Azure Functions queue
答案 1 :(得分:6)
仅供参考,我在这里进行节流搜索。您可以在函数上使用[Singleton]属性,以确保一次仅执行一次。也许不是您真正想要的东西,还是一种非常严格的节流方式,但这仍然是一个选择。
答案 2 :(得分:1)
对于那些仍然感兴趣的人: https://docs.microsoft.com/en-us/azure/azure-functions/event-driven-scaling#limit-scale-out
有一种方法可以通过设置 functionAppScaleLimit
参数来限制并行执行的数量。
答案 3 :(得分:0)
Microsoft添加了一个新设置,该设置可用于限制函数执行的并发性。设置为WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT
,可用于限制并行执行多少个功能实例。但是,据Microsoft称,它尚未完全实施。
https://github.com/Azure/azure-functions-host/wiki/Configuration-Settings