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

Azure App Service中用户触发的并发后台线程丢失问题求助

Azure App Service后台任务丢失/异常退出的核心原因

你遇到的问题并非ASP.NET对后台线程的垃圾回收导致,本质是Azure App Service的应用生命周期管理机制和沙箱环境限制造成的,具体原因如下:

  • 应用空闲超时回收:Azure App Service默认配置下,Web应用如果连续20分钟没有收到外部请求,会自动进入休眠状态并回收进程。此时所有运行中的后台任务会被直接终止,不会触发任何异常捕获逻辑。即使你使用IHostedService、BackgroundService或Quartz,只要进程被回收,任务都会中断。

  • 定期/触发式应用回收:Azure会定期(通常每天一次)对应用池进行回收操作,另外当应用的资源占用过高、配置变更、部署新版本或平台更新时,也会触发进程回收。这种回收是强制终止进程,进程内的所有线程(包括后台任务线程)会被立即停止,没有机会执行try/catch里的清理代码。

  • 沙箱环境运行限制:Azure App Service的沙箱环境对应用的运行有严格约束,尤其是免费/共享层:

    • 对于长时间运行的任务,沙箱会监控进程的持续运行时间,超过阈值(比如免费层最长允许任务运行10分钟)会强制终止进程;
    • 即使是标准/高级层,虽然没有明确的运行时间限制,但如果后台任务持续占用资源,也可能被平台判定为异常进程而终止。
  • WebJobs的共享生命周期问题:WebJobs默认与对应的Web App共享同一个应用池,当Web App进程被回收时,WebJobs也会被一并终止。即使是独立的连续WebJobs,依然受Azure的应用回收机制和沙箱限制影响,无法保证长时间任务的持续运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:53:13