首页 > 解决方案 > Azure Functions 并发和缩放行为

问题描述

SO上有一堆Azure Functions并发问题,但没有一个专门解决这个问题。

我正在考虑 HTTP 触发的函数应用程序的扩展方案(如果重要,运行时是 Node.js)。我来自 AWS Lambda 世界,每个并发调用都会产生一个新的 Lambda 实例:

如果在处理请求时再次调用该函数,则会分配另一个实例,这会增加该函数的并发性。

让我对 Azure Function 应用程序感到困惑的是他们文档中的这篇文章:

单个函数应用最多只能横向扩展 200 个实例。但是,单个实例一次可以处理多个消息或请求,因此对并发执行的数量没有设定限制。

在什么情况下,单个 FA 实例会一次处理多个请求?

标签: concurrencyazure-functionsserverlessazure-http-trigger

解决方案


此行可能参考以下信息

函数应用中的 host.json 文件允许配置主机运行时和触发行为。除了批处理行为之外,您还可以管理多个触发器的并发性。通常调整这些选项中的值可以帮助每个实例根据调用函数的需求适当地扩展。

host.json 文件中的设置适用于应用程序中的所有函数,在函数的单个实例中。例如,如果您的函数应用具有两个 HTTP 函数并且maxConcurrentRequests 请求设置为 25,则对任一 HTTP 触发器的请求将计入​​共享的 25 个并发请求。当该函数应用扩展到 10 个实例时,这两个函数有效地允许 250 个并发请求(10 个实例 * 每个实例 25 个并发请求)。

其他主机配置选项可在host.json 配置文章中找到。


推荐阅读