我正在了解 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
不,我去将 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 函数应用程序的代码。
FUNCTIONS_WORKER_PROCESS_COUNT
设置用于确定 Azure Functions 将用于分发函数调用的每台主机的工作进程数。
默认情况下,每个 Functions 主机实例都有一个单语言工作进程,并且可以将每个主机的进程增加到 10 个。
如果
FUNCTIONS_WORKER_PROCESS_COUNT
设置为 4,则 Azure Functions 将在所有 4 个工作线程之间均匀分配同步函数调用,并且每个主机实例将同时执行 4 个单独的函数。
这两种情况下成本会产生什么影响? (我知道扩展会花费更多)
成本的影响取决于创建的实例数量及其运行时间。
如果负载超过现有实例,Azure 将通过添加更多 Function App1 实例来处理负载来进行扩展。
对成本的影响最初取决于创建的实例数量及其运行时间。由于资源分配的增加,更多实例会导致更高的成本。
Cores
会对FUNCTIONS_WORKER_PROCESS_COUNT
属性产生影响。
对于 CPU 密集型应用程序,将语言工作线程数量设置为等于或高于每个功能应用程序可用的核心数量。 在高级版或应用服务计划中使用此属性时,请记下您的计划提供的核心数量。
示例:高级计划
提供两个核心,因此您应该从EP2
的值开始,然后根据需要增加两个,直至最大值。2
参考资料: