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

Azure容器应用托管ASP.NET Core 8 Web API时网络入流量为何不低于10kbps?

解决Azure容器应用中ASP.NET Core Web API空闲时网络入流量过高的问题

排查并优化Azure平台级默认流量

  • 调整存活/就绪探针配置:Azure容器应用默认的HTTP探针会定期向API发起请求,这是空闲时流量的主要来源之一。你可以:

    • 将HTTP探针改为TCP探针:仅检测端口连通性,不会产生HTTP请求流量。示例配置(Bicep):
      livenessProbe: {
        type: 'Tcp'
        port: 8080 // 替换为你的API监听端口
        periodSeconds: 300 // 延长探测间隔至5分钟
        failureThreshold: 3
      }
      readinessProbe: {
        type: 'Tcp'
        port: 8080
        periodSeconds: 300
        failureThreshold: 3
      }
      
    • 如果必须保留HTTP探针,大幅延长periodSeconds(比如300秒),减少请求频率。
  • 调整监控采样策略:若开启了Application Insights,实时指标采样会产生轻量流量。可以:

    • 降低采样率至最低值,或在空闲时段关闭实时监控(业务允许的前提下)。
    • 关闭非必需的日志/指标收集规则,减少平台侧的数据上报流量。

优化ASP.NET Core应用本身

  • 关闭生产环境非必需中间件:比如Swagger/OpenAPI中间件,在生产环境务必关闭,避免因静态资源访问或文档请求产生流量。在Program.cs中移除或注释相关代码:

    // if (app.Environment.IsDevelopment())
    // {
    //     app.UseSwagger();
    //     app.UseSwaggerUI();
    // }
    
  • 精细化配置Kestrel连接管理:进一步优化连接限制,减少空闲连接带来的隐性流量:

    builder.WebHost.ConfigureKestrel(options =>
    {
        options.ListenAnyIP(8080, listenOptions =>
        {
            // 仅启用必要的HTTP协议
            listenOptions.Protocols = HttpProtocols.Http1;
            // 缩短KeepAlive超时,快速释放空闲连接
            listenOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(1);
            listenOptions.Limits.IdleTimeout = TimeSpan.FromMinutes(1);
        });
        // 关闭IPv6监听(若无需支持)
        options.AllowHostHeader = false;
    });
    
  • 排查后台服务/定时任务:检查应用中是否存在Hosted Service或定时任务,在空闲时段仍在发起外部请求(比如心跳、数据上报)。如果有,添加空闲检测逻辑,暂停非必需的后台任务。

容器应用缩放与网关配置

  • 调整实例缩放策略:将最小实例数设为1(避免多实例带来的多份探针流量),并确保弹性缩放的触发阈值设置合理,避免不必要的实例启动。
  • 确认网关健康检查联动:Azure容器应用的入口网关会联动探针配置,当探针间隔延长后,网关侧的健康检查流量也会同步降低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:23:18