我有一个WebJob计划通过Settings.job'0 0/10 * * *'每10分钟运行一次,一直工作正常,然后昨晚我的工作就是退出被叫。在eventlog.xml中查看最后一次调用,我看到以下内容
<EventData>
<Data>7192</Data>
<Data>LogCleanup</Data>
<Data>Role environment . FAILED TO INITIALIZE. hr: -2147024891</Data>
</EventData>
此后不再打电话,我今天早上从门户网站手动运行该作业,并且工作正常,并按预期再次被称为eevery 10分钟。我的NLog内部日志文件记录了以下名为
的最后一次运行2016-12-15 21:40:02.6449 Error Error has been raised. Exception: Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (409) Conflict. ---> System.Net.WebException: The remote server returned an error: (409) Conflict.
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)
--- End of inner exception stack trace ---
at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)
at Microsoft.WindowsAzure.Storage.Table.TableOperation.Execute(CloudTableClient client, CloudTable table, TableRequestOptions requestOptions, OperationContext operationContext)
at Microsoft.WindowsAzure.Storage.Table.CloudTable.Execute(TableOperation operation, TableRequestOptions requestOptions, OperationContext operationContext)
at NLog.AzureTableStorage.AzureTableStorageTarget.Write(LogEventInfo logEvent)
at NLog.Targets.Target.Write(AsyncLogEventInfo logEvent)
Request Information
RequestID:1153c4ed-0002-000e-611b-57d353000000
RequestDate:Thu, 15 Dec 2016 21:40:02 GMT
StatusMessage:Conflict
ErrorCode:EntityAlreadyExists
这些错误对我没有任何意义,但更大的问题是为什么这项工作刚刚退出被召唤?一次运行失败,出现一些无法解释的错误,并且调度程序退出调用它似乎不正确。
WebJobs的可靠性如何? 我需要进行哪些检查来验证他们被调用?
答案 0 :(得分:1)
请确保您的网络应用已启用 AlwaysOn 。 CRON计划作业需要这样 - 请参阅文档here。如果我们检测到您没有启用AlwaysOn,运行时实际上会向日志发出警告:
此Web应用程序似乎未启用Always On'。确保 当SCM主机空闲时,您的连续作业不会停止运行 太长时间,请考虑在配置设置中启用“始终开启” 为您的Web应用程序。注意:'Always On'仅适用于Basic, 标准和高级模式。
请检查您的WebJob logs - 您应该看到它。该日志的想法是帮助用户自动诊断这个,但也许你没有看到它?如果我们检测到您有连续的WebJobs但未启用AlwaysOn,我们还会在WebJob的门户中显示警告。对此的警告将显示在WebApp的设置页面上的AlwaysOn设置中。