【发布时间】:2015-04-30 06:51:34
【问题描述】:
我有一个 Azure WebJob 在运行仅 20 分钟后失败,并显示以下日志输出:
[02/27/2015 00:30:11 > 3e9b72: SYS INFO] Status changed to Initializing
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Run script 'Namespace.Class.DataProcessor.exe' with script host - 'WindowsScriptHost'
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Status changed to Running
[02/27/2015 00:30:23 > 3e9b72: INFO] Found the following functions:
[02/27/2015 00:30:23 > 3e9b72: INFO] Namespace.Class.DataProcessor.Functions.ManualTrigger
[02/27/2015 00:30:23 > 3e9b72: INFO] Executing: 'Functions.ManualTrigger' because This was function was programmatically called via the host APIs.
[02/27/2015 00:51:35 > 3e9b72: ERR ] Thread was being aborted.
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] WebJob process was aborted
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Stopped
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Failed
[02/27/2015 00:51:35 > 3e9b72: SYS ERR ] WebJob run failed due to: System.Threading.ThreadAbortException: Thread was being aborted.
at Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase job, IJobLogger logger, String runId)
at Kudu.Core.Jobs.TriggeredJobRunner.<>c__DisplayClass2.<StartJobRun>b__0(Object _)
按计划每天在系统安静时启动一次,20 分钟后它会因该错误而失败。 此错误仅在作业由调度程序自动触发时发生。如果从站点下的 Azure WebJob 面板手动触发,即使运行多个小时也不会出错。
工作申请输出一个“。”每隔几个步骤就可以防止 Azure 认为它处于空闲状态。我还在作业运行的网站上配置了以下设置,以防止它在需要一段时间才能响应或向日志输出某些内容时超时:
WEBJOBS_IDLE_TIMEOUT = 14400
SCM_COMMAND_IDLE_TIMEOUT = 14400
作业操作是触发作业的 POST 请求,我怀疑它与手动启动作业的机制相同(并且不会超时)。
如何防止此操作在 20 分钟后失败?我需要更改/添加什么设置才能让作业运行超过 20 分钟?
【问题讨论】:
-
你解决过这个问题吗?我有同样的问题。
-
这似乎是相关的 - stackoverflow.com/questions/27939766/…
-
@jrummell 我的解决方案是将作业拆分为更集中的功能并更频繁地运行它们,因为它是构建数据量导致它需要这么长时间。现在功能不会超过 10 分钟,因此它们不会被关闭。还将测试“始终开启”解决方案,然后可能还会测试“stopping_wait_time”设置,看看是否有效。
标签: azure azure-webjobs