【问题标题】:How to handle that Azure App Service doesn't recover from "Http Error 500.37 - ANCM Failed to Start Within Startup Time Limit"如何处理 Azure 应用服务无法从“Http 错误 500.37 - ANCM 无法在启动时间限制内启动”中恢复
【发布时间】:2020-08-11 02:08:05
【问题描述】:

我们在运行 .NET Core 3.1 的 Azure 应用服务上看到此错误。看起来当 Azure 更新服务器场时,我们的实例会重新启动,并且它会尝试同时重新启动所有应用服务。我们确实有很多服务在 1 个实例上运行,因为它是一个 DEV/QA 实例。实例有足够的资源进行正常运行,但是当一切都重新启动的同时它看起来需要更多的时间。

问题是应用服务无法从中恢复,所以我们的服务只有在我们手动重启应用时才能重新开始工作。

这里他们提到了错误: https://docs.microsoft.com/en-us/aspnet/core/test/troubleshoot-azure-iis?view=aspnetcore-3.1#:~:text=500.37%20ANCM%20Failed%20to%20Start%20Within%20Startup%20Time%20Limit&text=By%20default%2C%20the%20timeout%20is,startup%20process%20of%20multiple%20apps.

但是这里的指导是“错开多个应用程序的启动过程”,但是在更新服务场时,我认为我们没有这种能力,对吗?这似乎在这里得到了证实:https://twitter.com/martincetkovsky/status/1231160330488774657?lang=en

基于此:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.1#attributes-of-the-aspnetcore-element

startupTimeLimit
模块等待可执行文件启动侦听端口的进程的持续时间(以秒为单位)。如果超过此时间限制,模块将终止该进程。模块在收到新请求时尝试重新启动进程,并继续尝试在后续传入请求上重新启动进程,除非应用程序在最后滚动分钟内启动 rapidFailsPerMinute 次数失败。

这意味着应用程序将至少在 1 分钟后重试,但对我们来说似乎并非如此。这可能是我们端的错误配置吗?

我可以在更新后遇到这些错误(毕竟这是 DEV/QA),但如果它没有恢复,那就是一个问题。在 prod 中我们不应该看到这一点,因为我们有更多可用资源,而且自动恢复也很重要。

如何确保我们的服务不会陷入这种状态?除了拥有过大的服务器场(以及相关成本)之外?

【问题讨论】:

标签: azure asp.net-core azure-web-app-service


【解决方案1】:

根据 Microsoft 的建议,我继续在我们的网络应用上设置 AutoHeal。

这是我正在使用的 ARM 模板摘录:

    "autoHealEnabled": true,
    "autoHealRules": {
      "triggers": {
        "privateBytesInKB": 0,
        "statusCodes": [
          {
            "status": 500,
            "subStatus": 37, //Startup time limit 120000 in DEV and QA
            "win32Status": 0,
            "count": 1,
            "timeInterval": "00:01:00"
          }
        ]
      },
      "actions": {
        "actionType": "Recycle",
        "minProcessExecutionTime": "00:00:00"
      }
    }

此更改的部署仍在我们的环境中进行,因此我尚未完全验证这是否可以完全解决问题,但似乎很有希望。

【讨论】:

  • 我们也遇到了同样的问题。 AutoHeal 是否最终有所作为?
  • 我也遇到了同样的问题。您还可以在以下位置配置自定义 AutoHeal 规则并查看应用的 AutoHeal 历史记录:应用服务 -> [您的应用] -> 诊断和解决问题 -> 诊断工具 -> 自动修复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多