【发布时间】:2020-08-11 02:08:05
【问题描述】:
我们在运行 .NET Core 3.1 的 Azure 应用服务上看到此错误。看起来当 Azure 更新服务器场时,我们的实例会重新启动,并且它会尝试同时重新启动所有应用服务。我们确实有很多服务在 1 个实例上运行,因为它是一个 DEV/QA 实例。实例有足够的资源进行正常运行,但是当一切都重新启动的同时它看起来需要更多的时间。
问题是应用服务无法从中恢复,所以我们的服务只有在我们手动重启应用时才能重新开始工作。
但是这里的指导是“错开多个应用程序的启动过程”,但是在更新服务场时,我认为我们没有这种能力,对吗?这似乎在这里得到了证实:https://twitter.com/martincetkovsky/status/1231160330488774657?lang=en
startupTimeLimit
模块等待可执行文件启动侦听端口的进程的持续时间(以秒为单位)。如果超过此时间限制,模块将终止该进程。模块在收到新请求时尝试重新启动进程,并继续尝试在后续传入请求上重新启动进程,除非应用程序在最后滚动分钟内启动 rapidFailsPerMinute 次数失败。
这意味着应用程序将至少在 1 分钟后重试,但对我们来说似乎并非如此。这可能是我们端的错误配置吗?
我可以在更新后遇到这些错误(毕竟这是 DEV/QA),但如果它没有恢复,那就是一个问题。在 prod 中我们不应该看到这一点,因为我们有更多可用资源,而且自动恢复也很重要。
如何确保我们的服务不会陷入这种状态?除了拥有过大的服务器场(以及相关成本)之外?
【问题讨论】:
-
同样的问题,但我只有一个小实例已经运行了一年多。一夜之间,客户打来电话说它不工作,这是错误。非常令人沮丧。
标签: azure asp.net-core azure-web-app-service