我试图并行地运行对Azure持久函数的每个API调用。它只执行一个调用就可以了,但是当我一次得到多个调用(比如10)时,它首先开始运行所有的10个请求。然后,当orchestrator函数调用执行主要工作的活动函数时,它只会开始执行一些请求(根据我的host.json而定),并等待大约5分钟才能与其余的请求一起运行活动函数。
应该注意的是,我的活动功能大约需要3-3,5分钟才能运行,并且是大量CPU使用和I/O操作的混合体。
我已经多次尝试调整我的参数(将它们设置为1,并将它们设置为最大),但是似乎没有什么可以修复它。我的host.json看起来是这样的:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[2.*, 3.0.0)"
},
"functionTimeout": "00:10:00",
"extensions": {
"durableTask": {
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 20,
"storageProvider": {
"controlQueueBatchSize": 5,
"controlQueueBufferThreshold": 5
}
},
"http": {
"routePrefix": "api",
"maxConcurrentRequests": 5
}
}
}我的Azure配置使用:
FUNCTIONS_WORKER_PROCESS_COUNT: 10
PYTHON_THREADPOOL_THREAD_COUNT: 10
发布于 2022-04-23 18:36:12
我的经验是,大多数持久功能的可伸缩性都是在活动级别进行的。
正如您所说的,听起来您有一个Orchestrator,它运行一个长时间运行的活动,并且您正在尝试在orchestrator级别获得可伸缩性。
在您的场景中,是否可能有一个http请求触发器表示几个工作项(json有效负载包含足够多个工作项的数据),然后协调器可以使用文档完整的扇扇模式并行运行这些工作项吗?
https://stackoverflow.com/questions/71952342
复制相似问题