Azure 中工作进程计数有什么用 - FUNCTIONS_WORKER_PROCESS_COUNT

问题描述 投票:0回答:1

我正在了解 Azure 函数应用程序最佳实践 https://learn.microsoft.com/en-us/azure/azure-functions/functions-best-practices 并遇到了 FUNCTIONS_WORKER_PROCESS_COUNT 设置

我想通过以下示例了解更改此设置的含义

我有 2 个 Azure 函数应用程序, 第一个具有 1 个功能和触发器 第二个具有多种功能和触发器。

Azure Function App1 --> 触发器1

Azure Function App2 --> 触发器1、触发器2、触发器3、触发器4

函数应用程序托管在高级计划中,计划如下 enter image description here

不,我去将 FUNCTIONS_WORKER_PROCESS_COUNT 的值增加到 4。

增加计数会产生什么影响?

如果有多个并发调用

案例 1. Azure Function App1 - 触发器1

案例 2. Azure Function App2 - 触发器1、触发器2、触发器3、触发器4

--> 对于案例 1,Azure 是否允许 4 个并发调用触发器 1,然后扩展到更多 Function App 1 实例

--> 对于情况 2,Azure 是否允许所有触发器同时运行,然后再扩展到 Function App2 的更多实例

这两种情况下成本会产生什么影响? (我知道扩展会花费更多)

“核心” 是否会对此属性 - FUNCTIONS_WORKER_PROCESS_COUNT 产生任何影响?

对于此示例,请考虑使用 C# 的 .Net 6 作为 Azure 函数应用程序的代码。

azure azure-functions azure-functions-isolated
1个回答
0
投票

FUNCTIONS_WORKER_PROCESS_COUNT
设置用于确定 Azure Functions 将用于分发函数调用的每台主机的工作进程数。

  • 调整 Function App 应用程序设置中FUNCTIONS_WORKER_PROCESS_COUNT 的值,以指定可以同时执行的函数的并发实例数。

enter image description here

  • 此设置有助于控制 Function 应用程序的并发性和可扩展性。

默认情况下,每个 Functions 主机实例都有一个单语言工作进程,并且可以将每个主机的进程增加到 10 个。

如果

FUNCTIONS_WORKER_PROCESS_COUNT
设置为 4,则 Azure Functions 将在所有 4 个工作线程之间均匀分配同步函数调用,并且每个主机实例将同时执行 4 个单独的函数。

  • 当工作负载同时存在 CPU 密集型和 I/O 密集型调用时,请考虑使用此设置。

这两种情况下成本会产生什么影响? (我知道扩展会花费更多)

  • 成本的影响取决于创建的实例数量及其运行时间。

  • 如果负载超过现有实例,Azure 将通过添加更多 Function App1 实例来处理负载来进行扩展。

  • 对成本的影响最初取决于创建的实例数量及其运行时间。由于资源分配的增加,更多实例会导致更高的成本。

  • Cores
    会对
    FUNCTIONS_WORKER_PROCESS_COUNT
    属性产生影响。

  • 对于 CPU 密集型应用程序,将语言工作线程数量设置为等于或高于每个功能应用程序可用的核心数量。 在高级版或应用服务计划中使用此属性时,请记下您的计划提供的核心数量。

示例:高级计划

EP2
提供两个核心,因此您应该从
2
的值开始,然后根据需要增加两个,直至最大值。

参考资料:

  1. FUNCTIONS_WORKER_PROCESS_COUNT

  2. https://stackoverflow.com/a/71869418

© www.soinside.com 2019 - 2024. All rights reserved.