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

Azure App Service文件上传间歇性异常缓慢问题排查求助

问题背景

我们有一个允许用户上传约2MB文件并保存至Azure Blob Storage的应用,运行多年正常,但数日前开始出现文件上传控制器动作响应时间间歇性极长的情况:正常上传仅需1秒或更短,偶尔会随机耗时长达60秒。

文件通过IFormFile传入动作方法:

public async Task<IActionResult> AddFile(IFormFile file)
{
}

查看App Insights日志发现,长耗时请求的所有依赖调用都非常快,总耗时远大于依赖调用耗时之和——所有依赖调用都发生在请求执行的最后1秒,耗时1.1ms的数据库调用是上传动作方法的第一行代码,说明延迟发生在进入动作方法之前,推测是等待完整multipart请求(文件附件)的阶段,但无法理解为何偶尔慢50倍。

本地或测试App Service环境无法复现该问题。


可能的原因及排查步骤
  • 客户端到生产环境的网络波动:部分用户所在网络可能存在带宽不足、丢包或路由拥堵,导致文件数据传输缓慢,服务端需等待完整请求接收完毕才会进入控制器方法。排查时可尝试收集用户端的网络日志(如浏览器Network面板),确认上传请求的「发送数据」阶段耗时是否异常。
  • App Service实例资源瓶颈:生产环境实例的CPU、内存突发占用过高时,会导致请求排队等待处理。可在Azure门户查看App Service的监控指标(CPU使用率、内存占用、请求队列长度),对应长耗时请求的时段,确认是否存在资源峰值。
  • Azure平台层临时故障:Azure基础设施的网络节点、存储节点偶尔可能出现局部拥堵或故障,可通过App Service的「诊断和解决问题」面板查看平台级别的告警或故障记录。
  • 请求解析配置问题:ASP.NET Core默认的multipart请求解析配置(如缓冲区大小、超时时间)可能在特定场景下触发延迟。可尝试显式配置相关参数:
    builder.Services.Configure<FormOptions>(options =>
    {
        options.MultipartBodyLengthLimit = 2 * 1024 * 1024; // 匹配2MB文件大小
        options.RequestTimeout = TimeSpan.FromSeconds(30);
    });
    
  • 自动缩放策略延迟:如果App Service启用了自动缩放,当请求突增时,实例扩容可能存在延迟,导致现有实例过载,请求排队。可查看缩放日志确认是否在长耗时时段有扩容操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:52:39