0

以“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 应用程序的情况。

任何帮助深表感谢!!

4

1 回答 1

0

Azure 偶尔会自行决定移动 Web 应用程序。据我所知,具体原因尚未公开。我在我的日志中看到过类似的东西,但它并没有导致任何服务中断。要查看是否是这种情况,请执行以下操作:

  1. 转到托管 WebJob 的 Web 应用管理刀片。
  2. 导航到诊断和解决问题边栏选项卡。
  3. 选择每个实例的指标(应用程序)。

在每个实例(应用程序)的指标屏幕上,您将能够看到每个 Web 应用程序实例的各种指标和性能计数器。您可以打开和关闭这些实例,以查看它们总体或单独的执行情况。

现在,如果托管您的 WebJob 的 Web 应用程序已移动(从而触发您看到的重新启动),您应该会看到比您预置的更多的实例,并且图表中会出现不连续性。例如,如果您预置了一个实例,但在这些图表中看到两个或更多实例,则您的 Web 应用程序已被移动。请注意,这些图表的最长回溯期为 24 小时。

请回帖并让我们知道您是否看到了这样的内容。

于 2018-01-11T16:21:09.793 回答