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

.NET 7下Docker部署的Azure Functions性能计数器日志暴增问题

排查Azure Functions(.NET7 + Linux Docker)Application Insights性能计数器日志暴增问题

以下是针对问题的排查方向和解决方案:

1. 确认Application Insights SDK版本变化

升级到.NET7时,大概率同步更新了Microsoft.ApplicationInsights.WorkerService(Azure Functions核心依赖的AI SDK包)。较新版本的SDK(如2.21.x及以上)对Linux环境下的性能计数器采集逻辑做了调整:

  • 之前Linux环境中Windows性能计数器无法正常采集,仅生成带??APP_WIN32_PROC??占位符的单条日志;
  • 新版本SDK开始支持采集Linux原生性能计数器,同时可能默认提高了采集频率,或新增了更多默认采集的计数器类型,直接导致日志量激增。

2. 检查性能计数器采集配置

查看应用配置(appsettings.json或Azure App Service应用设置),确认是否存在AI性能计数器相关的自定义配置:

  • 如果之前手动设置过CollectionFrequency为60秒,升级后配置丢失会导致SDK使用默认的更短间隔(如10秒甚至1秒),日志量直接翻数倍;
  • 新版本SDK可能默认启用了额外的计数器(如.NET运行时相关计数器、系统CPU/内存计数器),这些都会增加日志条目。

你可以手动指定需要采集的计数器和间隔,恢复到类似升级前的状态:

"ApplicationInsights": {
  "InstrumentationKey": "<你的仪器密钥>",
  "PerformanceCounters": {
    "Enabled": true,
    "CollectionFrequency": "00:01:00", // 恢复为1分钟一次
    "CounterNames": [
      "\\Process(??APP_WIN32_PROC??)\\Private Bytes",
      "\\Process(??APP_WIN32_PROC??)\\% Processor Time",
      "\\Process(??APP_WIN32_PROC??)\\% Processor Time Normalized"
    ]
  }
}

3. 分析当前采集的计数器实例

在Application Insights日志中查看现在的性能计数器实例名称:

  • 如果不再是??APP_WIN32_PROC??,而是具体的进程ID或容器内进程名,说明SDK现在能正确识别Linux进程,可能每个相关进程都在上报计数器数据;
  • 这种情况下,可通过配置过滤掉不需要的进程实例,或仅保留Functions宿主进程的计数器。

4. 检查Azure App Service的AI相关配置

确认App Service应用设置中是否新增了以下配置项:

  • APPINSIGHTS_PERF_COUNTERS_ENABLED:若设为true,会强制启用额外的性能计数器采集;
  • APPINSIGHTS_SAMPLING_PERCENTAGE:若采样率设得过高(如100%),会导致所有生成的计数器日志都被上报,无采样过滤。

如果不需要高采样率,可适当调低采样比例减少日志量:

APPINSIGHTS_SAMPLING_PERCENTAGE=20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:05:29