Azure App Service容器不断重启-“容器可用性检查失败”。

时间:2019-10-02 13:41:43

标签: .net azure docker containers

对不起,我无法为您提供可重复的示例,但希望您能帮助我确定环境中出了什么问题。

我在PC3应用服务计划(16GB RAM)中运行了基于 windows容器的.NET 4.7应用程序。该应用程序公开了REST API,并且还是在某些BlobStorage事件上触发的JobHost。

整个业务逻辑运行良好-在本地运行没有任何问题,并且在Azure上也运行了限制时间(1-5分钟)。但是,容器以某种方式每隔X分钟重新启动一次,我无法弄清原因。

这是我在容器日志中看到的内容:

02/10/2019 12:23:46.142 INFO - Site: myapp - Container failed availability check. It has failed 122895 check(s). Container will be declared unavailable if it exceeds 3 consecutive failed checks.
02/10/2019 12:23:46.142 ERROR - Site: myapp - Container is unavailable.
02/10/2019 12:23:47.129 INFO - Site: myapp - Container failed availability check. It has failed 5 check(s). Container will be declared unavailable if it exceeds 3 consecutive failed checks.
02/10/2019 12:23:47.129 ERROR - Site: myapp - Container is unavailable.
....
02/10/2019 12:23:56.862 INFO - Site: myapp - Attempting to stop container: 310a7f2278cdb56...
02/10/2019 12:23:56.895 INFO - Site: myapp - Purging pending logs after stopping container
02/10/2019 12:23:56.895 INFO - Site: myapp - Container stopped successfully. Container Id: 310a7f2278cdb56....

我不知道为什么可用性检查失败。有人可以向我解释该检查的工作原理以及如何获取有关失败原因的更多信息吗?

1 个答案:

答案 0 :(得分:1)

App Service平台会尝试通过其HTTP终结点上的容器来定期检查容器的可用性。如果容器没有响应,或者响应时间超过5秒钟,我们认为可用性检查失败。如果连续三次出现故障,我们认为该容器不健康,请停止并重新启动。

如果您的应用程序占用大量内存/资源,则容器可能无法在这些参数内做出响应。

我们介绍了一些应用程序设置,您可以在应用程序上设置这些设置,以便在可用性检查失败时控制操作:

CONTAINER_AVAILABILITY_CHECK_MODE =修复

平台会连续3次检查可用性(默认),然后检查可用性并停止并重新启动容器

CONTAINER_AVAILABILITY_CHECK_MODE =仅报告

平台会检查可用性,并在连续3次可用性检查(默认)之后报告容器(在日志中)。平台不会停止/重新启动容器

CONTAINER_AVAILABILITY_CHECK_MODE =关闭

平台不检查可用性

我们还有一个Windows Containers on App Service wiki用于表示您可能认为有用的项目,这些项目到目前为止尚未包含在我们的文档中。