Azure(持久)函数-管理并行性

Azure(持久)函数-管理并行性,azure,azure-functions,azure-durable-functions,Azure,Azure Functions,Azure Durable Functions,我发布这个问题是为了看看我是否正确理解Azure函数中的并行性,尤其是持久函数 最近使用az cli将设置最大并行度的功能添加到Azure函数中: az资源更新--资源类型Microsoft.Web/sites-g-n/config/Web--设置属性.functionAppScaleLimit= 我已经将其应用于我的函数应用程序,但我不确定的是,它如何与持久函数的MaxConcurrentOrchestratorFunctions和MaxConcurrentActivityFunction

我发布这个问题是为了看看我是否正确理解Azure函数中的并行性,尤其是持久函数

最近使用az cli将设置最大并行度的功能添加到Azure函数中:

az资源更新--资源类型Microsoft.Web/sites-g-n/config/Web--设置属性.functionAppScaleLimit=
我已经将其应用于我的函数应用程序,但我不确定的是,它如何与持久函数的MaxConcurrentOrchestratorFunctions和MaxConcurrentActivityFunctions设置配合使用

以下情况是否会导致全局最多250个并发活动函数

  • 功能限制:5
  • MaxConcurrentOrchestrator函数:5
  • MaxConcurrentActivityFunctions:10

引用您共享的此functionAppScaleLimit链接将帮助您指定功能的最大实例数。现在来看MaxConcurrentOrchestratorFunctions:设置可在单个主机实例上并发处理的最大orchestrator函数数,以及MaxConcurrentActivityFunctions可在单个主机实例上并发处理的最大活动函数数。指

现在,我将解释MaxConcurrentOrchestratorFunctions的功能,这将帮助您了解其工作原理:

MaxConcurrentOrchestratorFunctions控制在任何给定时间可以将多少orchestrator函数加载到内存中。如果将并发性设置为1,然后启动10个orchestrator函数,则一次只能在内存中加载一个。请记住,如果orchestrator函数调用活动函数,orchestrator函数将在等待响应时从内存中卸载。在此期间,可能会启动另一个orchestrator函数。其效果是,您将有多达10个orchestrator函数以交错方式运行,但实际上一次只能执行1个代码


此功能的动机是限制编排器代码使用的CPU和内存。它对于实现任何类型的单例模式都没有用处。如果要限制活动业务流程的数量,则需要实现此功能。

活动函数的全局最大值为50。这基于
functionAppScaleLimit
指定的5个应用程序实例和
MaxConcurrentActivityFunctions
指定的10个活动函数。编排器函数执行数和活动函数执行数之间的关系完全取决于您的特定实现。您可以有1-1000个业务流程来生成1-1000个活动。无论如何,您建议的设置将确保在单个函数实例上并发运行的业务流程和活动不会超过5个。

好的,因此根据我的示例,全局最多250个并发活动函数仍然是这样,对吗?我相信-可能会帮到您。另外,“这些设置有助于管理单个VM上的内存和CPU使用情况。但是,当跨多个VM向外扩展时,每个VM都有自己的限制集。这些设置不能用于控制全局级别的并发性。“-检查注释部分-如果它对您有帮助,请“接受作为答案”和“向上投票”,以便它可以帮助社区中寻求类似主题帮助的其他人。@Joyeng,您的活动函数的全局最大值为50。”。这基于
functionAppScaleLimit
指定的5个应用程序实例和
MaxConcurrentActivityFunctions
指定的10个活动函数。编排器函数执行数和活动函数执行数之间的关系完全取决于您的特定实现。您可以有1-1000个业务流程来生成1-1000个活动。无论如何,您建议的设置将确保在单个函数实例上并发运行的业务流程和活动不会超过5个。@至少这是旧的,但如果您将您的评论作为答案发布,我将接受它。
az resource update --resource-type Microsoft.Web/sites -g <resource_group> -n <function_app_name>/config/web --set properties.functionAppScaleLimit=<scale_limit>