Azure持久功能扇出比例限制?

Azure持久功能扇出比例限制?,azure,azure-functions,Azure,Azure Functions,我有一个持久的函数编排器,它可以分散成多个活动函数来处理一些工作负载。下面的代码是一个示例,其中函数_2是用于处理工作负载的扇形函数: public static async Task Run(DurableOrchestrationContext ctx) { // get a list of N work items to process in parallel object[] workBatch = await ctx.CallActivityAsync<objec

我有一个持久的函数编排器,它可以分散成多个活动函数来处理一些工作负载。下面的代码是一个示例,其中函数_2是用于处理工作负载的扇形函数:

public static async Task Run(DurableOrchestrationContext ctx)
{
    // get a list of N work items to process in parallel
    object[] workBatch = await ctx.CallActivityAsync<object[]>("Function_1");

    var parallelTasks = new List<Task<int>>();
    for (int i = 0; i < workBatch.Length; i++)
    {
        Task<int> task = ctx.CallActivityAsync<int>("Function_2", workBatch[i]);
        parallelTasks.Add(task);
    }

    //How many instances of Function_2 will handle the workload?
    await Task.WhenAll(parallelTasks);

    // aggregate all N outputs and send result to Function_3
    int sum = parallelTasks.Sum(t => t.Result);
    await ctx.CallActivityAsync("Function_3", sum);
}
公共静态异步任务运行(DurableOrchestrationContext ctx)
{
//获取要并行处理的N个工作项的列表
object[]workBatch=wait ctx.CallActivityAsync(“函数_1”);
var parallelstasks=新列表();
对于(int i=0;it.Result);
等待ctx.CallActivityAsync(“函数_3”,sum);
}

我的问题是,为了处理这项工作,将生成多少个函数_2的实例。我知道这取决于任务的数量,所以假设我有5000个任务。我怀疑它会产生5000个实例,但上限是多少,我能控制它吗。我多次阅读文档,但找不到关于这个主题的信息。我知道,根据定义,我不应该关心这一点,因为它是为我处理的,但是我的任务可能会使它们所依赖的支持资源过载。

在幕后,每个
CallActivity
调用都会成为存储队列中的一条消息,因此在您的示例中为5000条消息。这些消息将被功能应用程序使用

它将并行运行多个调用,但当然不是同时运行所有调用。您不会在文档中的任何地方看到确切的数字,因为它们将由内部秤控制器逻辑定义。它们还取决于每个活动调用的持续时间、CPU使用情况等

结果也可能随着时间的推移而改变

因此,您的milage可能会有所不同,您应该测试您的场景。

说明了设置MaxConcurrentActivityFunctions定义了每个主机并发活动函数的最大数量。默认值是可用核心数的10倍。