Azure App Service出现ETW资源耗尽异常,该如何解决?
这类异常源于Azure App Service环境中的ETW(Event Tracing for Windows)资源被耗尽,后续尝试终止不存在的诊断会话时触发了二次异常。即便未手动触发诊断采集,新部署的应用可能默认启用了自动诊断服务(如Service Profiler),或是Azure平台侧的自动诊断任务在后台运行抢占了资源。以下是具体解决方法:
禁用自动Service Profiler
这是最常见的诱因,可通过三种方式关闭:- 门户配置:进入App Service的「Application Insights」面板,找到「Profiler」开关并关闭。
- 配置文件:在
appsettings.json中添加:"ApplicationInsights": { "Profiler": { "Enabled": false } } - 环境变量:在App Service的「配置-应用设置」中添加
APPINSIGHTS_PROFILER_ENABLED = false。
关闭自动诊断任务
进入App Service的「诊断和解决问题」页面,检查是否有自动触发的诊断任务(如性能诊断自动扫描),将这类任务的自动运行开关关闭。调整实例资源(可选)
如果使用基础/标准计划,升级到更高规格的实例(如从B1升级到B2),更大的实例会分配更多ETW资源配额;若是隔离计划,可联系Azure支持调整宿主环境的ETW资源配置。清理冗余ETW采集
确认应用代码中是否有自定义的EventSource或ETW日志采集逻辑,关闭非必要的日志输出级别(如将日志级别从Trace调整为Information),减少ETW资源占用。临时缓解:定时重启实例
若上述配置修改需要时间生效,可通过Azure自动化或App Service的「重启」功能定时重启实例,释放被占用的ETW资源,但这仅为临时方案,需配合配置修改彻底解决。
注:新部署应用出现问题而旧应用正常,是因为Azure App Service的默认配置可能已更新,新部署的应用默认启用了自动Service Profiler等诊断服务,而旧应用保留了之前的配置。
内容的提问来源于stack exchange,提问作者Daniel Attfield

