【发布时间】:2019-09-17 07:15:02
【问题描述】:
我创建了一个 azure 持久函数,它调用了大约 8 个活动函数。这些活动函数创建了大约 100 个线程,它们启动 http 请求。我收到的数据必须进行转换。这个过程需要一些计算能力。例如:所有函数在本地需要大约 3 分钟,直到它们完成。
现在我想在 azure 中发布我的 azure 功能,并附上消费计划及其优势。我现在遇到的问题是,函数耗时超过10分钟,超过了最大执行时间。
我不想使用应用服务。我正在寻找一种通过缩放控制器或某些行为来增加核心数量的方法,从而使缩放控制器提高性能。
如果可能,我不想更改我的代码架构。我考虑将持久功能拆分为更小的部分,并手动使用 http 请求启动每个功能。但是由于函数是相互交互的,这似乎是对代码的一个非常大的改变,而不知道它是否会使缩放控制器使用更多的实例。
【问题讨论】:
-
当您谈论“该功能需要超过 10 分钟”时,您指的是哪个功能?协调器功能可以持续超过 10 分钟,因为状态被持久化到存储中。仅当活动功能需要超过 10 分钟时才会出现问题。
-
尽量使活动功能尽可能小(正如@Marc 提到的那样,它们会受到 10 分钟超时的限制),考虑每个活动功能有一个 http 请求。您仍然可以从协调器功能并行启动活动,然后等待它们完成并进行最终处理。
标签: c# azure azure-functions azure-durable-functions