【问题标题】:Long running scheduled WebJob Aborted by Azure长时间运行的计划 Web 作业被 Azure 中止
【发布时间】:2017-01-04 06:34:49
【问题描述】:

我在 Azure WebApp 上有一个 Azure 计划的 Web 作业。在 Web 作业内部,它从 azure blob 下载 excel 文件并读取(文件中有 25 - 30 k 条记录),然后迭代循环以在数据库中插入记录。现在,当我们计划(计划时间:18 小时)第一次成功运行作业并处理文件中的所有记录时,没有任何中断(在此时间站点正在访问之间)。但是,下次它无故失败(中止)(没有人访问站点。可能处于空闲状态)。

WebJob Abort Status

当我查看日志时没有任何迹象。但是,第一个 schedule 运行成功,后来显示成功状态都处于 Aborted 状态,为什么?

Success

同样在 webapp 中使用以下设置:

stopping_wait_time - 3600
WEBJOBS_IDLE_TIMEOUT - 3600
SCM_COMMAND_IDLE_TIMEOUT - 121

【问题讨论】:

  • 您是否为托管 WebJob 的站点启用了始终开启?如果该站点在 20 分钟左右没有流量,则托管 WebJob 的应用程序池可能会被卸载。
  • 不,因为我一直在使用 MS 网络合作伙伴订阅,所以无法启用它。但是,当网站正在使用或访问某人时,网络作业正在运行。
  • 该设置与您使用的定价层相关,而非订阅类型。您绝对需要将其打开以使其可靠。

标签: azure azure-web-app-service azure-webjobs


【解决方案1】:

Azure's documentation

Always On。默认情况下,如果 Web 应用程序空闲了一段时间,它们就会被卸载 一段的时间。这使系统可以节省资源。在基本或 标准模式,您可以启用 Always On 以保持应用程序在所有 时间。如果您的应用程序运行连续的 Web 作业,您应该启用 Always 开,否则 Web 作业可能无法可靠运行。

因此,Azure Web Apps 不保证您的 WebJob 继续运行超过 20 分钟。如果您需要依赖它,您需要启用Always On。启用它。见下文。

  1. Azure Portal 中,导航到您的应用服务。
  2. 点击设置菜单中的应用程序设置
  3. 打开Always On,然后点击保存

图片如下:

如果您使用的是 Azure 的免费层,也许这个帖子会对您有所帮助:How can I keep my Azure WebJob running without "Always On"

【讨论】:

  • Chen 我不想使用 Always On 功能,您提供的链接似乎要重新启动网站和 webjob 但再次重新启动 webjob 对我来说没有意义,因为我必须通过运行至少 8-10 小时的 webjob 处理数千条记录。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
相关资源
最近更新 更多