You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions中Task.Run本地并行、部署后串行问题咨询

Azure Functions 任务并行执行问题排查与解决

问题场景

本地运行时任务可正常并行执行,但部署到采用S1计划的Azure Functions后,任务变为串行执行。原实现代码如下:

var allRecordTasks = new List<Task<DataRecord>>();
for (int i = 0; i < 100; i++)
{
    allRecordTasks.Add(Task.Run(() => MyTask(cancellationToken)));
}

await Task.WhenAll(allRecordTasks);

其中MyTask的实现为:

private async Task<DataRecord> MyTask(CancellationToken cancellationToken)
{
    var timeSeriesType = await GetTimeSeriesTypeAsync();
    var dataRecord = new DataRecord(timeSeriesType);
    return dataRecord;
}

相关疑问:

  • 原本认为单核的S1计划支持多线程,是否有配置项可解决串行问题?
  • 多核心的Azure Functions计划是否原生支持任务并行?
  • 是否必须依赖Durable Functions才能实现并行执行?

解决方案

将代码修改为直接添加异步任务实例,即可在Azure Functions中实现并行执行:

allRecordTasks.Add(MyTask(cancellationToken));

问题根源

原代码中使用Task.Run额外开启线程,结合其他未提及的代码逻辑导致CPU核心占用过高。本地四核环境资源充足,该问题影响不明显;但在单核的S1计划环境中,过高的CPU占用会阻塞任务调度,最终表现为任务串行执行。

内容的提问来源于stack exchange,提问作者Norbert Huurnink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:40:37