FUNCTION_WORKER_PROCESS_COUNT 可以执行多少个并行任务等于 10

How many parallel tasks can do with FUNCTION_WORKER_PROCESS_COUNT equals 10

Azure 函数架构:

因此我们在 Azure Datafactory 中设置了一个管道,它包含 4 个触发器以同时使用 4 个不同的参数触发 Function1。

管道 -> Function1-param1 Function1-param2 Function1-param3 Function1-param4

昨天,我尝试在 5 分钟内触发该管道 2 次,例如10:30 和 10:31。也就是说,那一次我在5分钟内触发了8次Function1

管道 ->

time 1 Function1-param1 Function1-param2 Function1-param3 Function1-param4 10:30

time 2 Function1-param1 Function1-param2 Function1-param3 Function1-param4 10:31

奇怪的是,我们预计有 8 个调用 运行 并行,因为 FUNCTION_WORKER_PROCESS_COUNT 设置为 10,但只有 6 个调用 运行 并行,2 个是 运行 之后

那么问题来了,FUNCTION_WORKER_PROCESS_COUNT和可以运行并行的任务是什么关系

函数是用 Powershell 7 编写的。

AFAIK,每个 Function 主机实例的最大工作进程数受 FUNCTIONS WORKER PROCESS COUNT 变量限制。这些实例被视为独立的 VM,每个实例都应用了 FUNCTIONS WORKER PROCESS COUNT 限制。

如果 FUNCTIONS WORKER PROCESS COUNT 设置为 10,则每个主机实例将同时执行 10 个单独的功能。

Multiple Workers表示Multiple Process IdsSame Function App 这是函数的逻辑集合。

一个 Worker Process 可以托管一个 Function App 的所有功能,其中 Single Host FUNCTIONS_WORKER_PROCESS_COUNT 函数的默认值为 1 Host 表示它是 Physical/Virtual 主机,Function App 作为 Windows/Linux 进程运行。

参考获取更多关于FUNCTIONS_WORKER_PROCESS_COUNT机制的信息。

横向扩展还可以让您更快地适应需求的变化。

为了满足资源需求,通常可以快速添加或删除服务。这种灵活性和快速性通过仅使用(并支付)当时所需的资源有效地节省了开支。

请参阅此 article 以了解有关纵向扩展和横向扩展优势的更多信息。

更多信息参考FUNCTIONS_WORKER_PROCESS_COUNT:

  1. Azure Functions - Functions App Settings - functions_worker_process_count
  2. Azure Functions - Best Practices - FUNCTIONS_WORKER_PROCESS_COUNT