以“B2 Basic”定价层运行的计时器触发的 Azure Webjob 意外中止。
[01/09/2018 17:16:03 > 183d71: SYS INFO] Status changed to Running
[01/09/2018 17:16:04 > 183d71: INFO] *** WebJob Main: start ***
[01/09/2018 17:16:06 > 183d71: INFO] Found the following functions:
[01/09/2018 17:16:06 > 183d71: INFO] BB.WebJobs.Functions.ProcessQueueMessage
[01/09/2018 17:16:06 > 183d71: INFO] BB.WebJobs.Functions.DailyWorker
[01/09/2018 17:16:07 > 183d71: INFO] The next 5 occurrences of the schedule will be:
[01/09/2018 17:16:07 > 183d71: INFO] 1/10/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/11/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/12/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/13/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/14/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] Job host started
[01/09/2018 18:15:57 > 183d71: SYS INFO] WebJob is still running
[01/10/2018 00:15:00 > 183d71: INFO] Executing 'Functions.DailyWorker' (Reason='Timer fired at 2018-01-10T00:15:00.2773840+00:00', Id=85f5338f-f568-4bec-8eaf-e51fa63dffc0)
[01/10/2018 00:15:00 > 183d71: INFO] DailyWorker started
[01/10/2018 03:05:26 > 183d71: SYS INFO] Status changed to Starting
[01/10/2018 03:05:26 > 183d71: SYS INFO] WebJob singleton setting is False
[01/10/2018 03:05:32 > 183d71: SYS INFO] Run script 'BB.WebJobs.exe' with script host - 'WindowsScriptHost'
[01/10/2018 03:05:32 > 183d71: SYS INFO] Status changed to Running
[01/10/2018 03:05:36 > 183d71: INFO] *** WebJob Main: start ***
[01/10/2018 03:05:39 > 183d71: INFO] Found the following functions:
访问 SQL 数据库和请求网页的相同代码已经在本地运行了几个月。我正在将代码移动到 Azure,并计划让它在 WebJob 中连续运行。代码在午夜启动并按预期执行(通过数据库和日志文件验证),直到它突然重新启动。
这可以在上面的日志文件中看到,时间戳为:01/10/2018 03:05:26。
进一步检查 Kudu 跟踪日志,我发现了以下信息:
<step title="Startup Request" date="2018-01-10T03:05:20.437" instance="183d71" url="/" method="GET" type="request" pid="1588,2,8" SCM_SKIP_SSL_VALIDATION="0" ScmType="None" >
<step title="Cleanup Xml Logs" date="2018-01-10T03:05:20.453" /><!-- duration: 15ms -->
</step><!-- duration: 31ms -->
eventlog.xml 文件中没有错误。似乎某些 Azure 监视器决定通过发送“启动请求”来终止该进程。
我已经让代码运行了两个晚上,并且发生了完全相同的事情,尽管事件发生的时间不一样(超过 30 分钟的差异)。
问题:是否达到了一些 CPU 使用限制?我知道该进程没有使用比可用内存更多的内存,在这种情况下会捕获并记录异常。
我的 WebJob 是 CPU 贪婪的,但据我了解,CPU 与 Web 应用程序共享,我有责任决定如何利用资源 - 当 WebJobs 像它一样中止时,我不能这样做。我计划让 WebJob 持续运行,并在晚上醒来并工作 5-6 小时直到完成,然后在一天的剩余时间里睡觉。
我已经搜索过类似的问题,这不是没有指定“始终开启”的情况,也不是我以外的其他人重新启动 Web 应用程序的情况。
任何帮助深表感谢!!