连续运行具有高CPU负载的Azure WebJob会在"启动请求"

时间:2018-01-11 16:08:55

标签: azure-webjobs abort azure-webjobs-continuous

计时器触发了运行在" 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监视器决定通过发送&#34;启动请求&#34; 来终止该过程。

我已经让代码运行了两个晚上,并且完全相同的事情发生了,尽管事件发生的时间不一样(差异超过30分钟)。

问题:是否有一些CPU使用限制?我知道该进程没有使用比可用内存更多的内存,在这种情况下会捕获并记录异常。

我的WebJob是CPU贪婪的,但根据我的理解,CPU与Web应用程序共享,我有责任决定如何利用资源 - 这是我不能做的,当WebJobs像它一样中止时。我打算让WebJob不断运行,晚上醒来,工作5-6小时,直到完成,然后在剩下的时间里睡觉。

我搜索过类似的问题,这不是&#34;永远在&#34;没有指定,也没有我重新启动Web应用程序。

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

Azure偶尔会自行调整Web应用程序。据我所知,确切原因尚未公开。我在日志中看到过这样的东西,但它没有造成任何服务中断。要查看是否是这种情况,请执行以下操作:

  1. 转到托管WebJob的Web App管理刀片。
  2. 导航到诊断和解决问题刀片。
  3. 选择每个实例的指标(应用)。
  4. 在每个实例的度量标准(应用程序)屏幕上,您将能够看到每个Web App实例的各种度量标准和性能计数器。您可以打开和关闭这些实例,以查看它们在聚合或单独执行的方式。

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

    如果您看到的话,请回复并告诉我们。

相关问题