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

Azure App Service内存溢出排查及Function App适配计划咨询

适配大文件处理场景的Azure Function最佳应用服务计划选择

问题背景

我在生产环境的Azure App Service上运行.NET WebJob,该WebJob从Azure Blob读取JSON文件并存储到SQL数据库,部分文件大小可达2GB。目前遇到Azure App Service内存溢出异常,但在开发机器上运行正常。

计划尝试的Azure端方案:

  • 将WebJob转换为可按需自动缩放的Azure Function;
  • 当前使用Premium v2 P3V2应用服务计划。

已完成的代码优化(未解决内存溢出问题):

using (var zipBlobFileStream = new MemoryStream())
{
    await blockBlob.DownloadToStreamAsync(zipBlobFileStream);
    await zipBlobFileStream.FlushAsync();
    zipBlobFileStream.Position = 0;

   
    using (var zip = new ZipArchive(zipBlobFileStream))
    {
        var serializer = new JsonSerializer();

        foreach (var entry in zip.Entries)
        {
            if (entry.Length == 0) continue; // Skip if entry has no content

            using (var stream = entry.Open())
            using (var streamReader = new StreamReader(stream))
            using (var jsonReader = new JsonTextReader(streamReader))
            {
                // Move to the start of the array
                while (jsonReader.Read() && jsonReader.TokenType != JsonToken.StartArray) ;

                // Read each object in the array
                while (jsonReader.Read() && jsonReader.TokenType != JsonToken.EndArray)
                {
                    // Deserialize JSON object directly from the stream
                    var messageItem= serializer.Deserialize<MessageItem>(jsonReader);

                   
                    var DataItems = new DataItems 
                    {                            
                        items = new List<DataItem> { DataItems }
                    };

                    result.Add(MessageItems);
                }
            }
        }
    }
}

最佳应用服务计划推荐

1. Premium v3 (EP3) 计划

  • 单实例最高支持14GB内存 + 8vCPU,相比当前的P3V2(7GB内存/4vCPU),能大幅提升大文件解析时的内存承载能力,直接缓解内存溢出问题。
  • 支持弹性自动缩放,最多可扩展至100个实例,且冷启动时间极短(秒级),适合批量处理大文件这类波动型负载。
  • 支持持久化实例配置,可避免频繁冷启动带来的性能损耗,同时保留自动缩放的灵活性。

2. 隔离级v2 (Isolated v2 I3) 专用计划

  • 单实例同样提供14GB内存 + 8vCPU,性能和Premium v3持平,但采用固定实例定价模式,适合长期稳定运行的周期性批量处理任务,成本可控。
  • 运行在隔离的专用环境中,资源独占性更强,不会受到多租户场景下的资源争抢影响,稳定性更高。

额外优化建议

  • 代码层面:当前代码将所有解析后的对象存入result列表,2GB文件解析后的数据量极易突破内存上限,建议分批次写入SQL,比如每解析1000条数据就执行一次批量插入,随后清空当前列表,避免内存持续累积。
  • Function配置:使用Blob触发器时,设置WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT参数限制最大缩放实例数,防止同时处理过多大文件导致集群资源耗尽。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:32:38