Azure WebJob没有超时

问题描述

我正在运行一个触发的Web作业-每15分钟运行一次-这是一个控制台应用程序,它将数据从sql Server移至Mongo数据库。我已将WEBJOBS_IDLE_TIMEOUT和SCM_COMMAND_IDLE_TIMEOUT值配置为3600。在过去5天中,它处于空闲状态,并且没有中止或超时。我必须重新启动Web应用程序才能中止Web作业并重新启动它。

Azure WebJob Dashboard

有没有一种方法可以配置Web作业,该方法应在特定时间段后中止?

解决方法

WEBJOBS_IDLE_TIMEOUT配置仅在您的Web作业没有CPU且没有IO活动的情况下适用(请参见Kudu Wiki中的WebJobs

CPU活动是通过Process.TotalProcessorTime来衡量的,而IO活动是通过检查Webjob的标准和错误输出流中是否存在新字符来衡量的。来源:IdleManager.WaitForExitExecutable.ExecuteInternal

如果可能的话,让您的网络作业完成工作后正常退出。如果要强制中止长时间运行但仍在消耗CPU或IO的操作,则必须直接在webjob中对此进行编码。