Azure App Service - Spring Boot 应用程序在启动时卡住

Posted

技术标签:

【中文标题】Azure App Service - Spring Boot 应用程序在启动时卡住【英文标题】:Azure App Service - Spring Boot application stuck on startup 【发布时间】:2017-09-23 16:45:45 【问题描述】:

我将 Spring Boot Web 应用程序托管为 Azure 应用程序服务,但是其中一个似乎在启动时陷入了循环。该应用程序无法访问,并且看起来它每半分钟重新启动一次。日志中没有错误,重新启动应用服务也没有帮助。

有人知道为什么会发生这种情况或我该如何解决吗? 提前致谢。

【问题讨论】:

【参考方案1】:

有时使用默认启动命令启动 jar 需要更多时间。可能是因为它使用-cp 命令启动jar,所以它会扫描文件系统中的配置文件。

java -cp app.jar org.springframework.boot.loader.JarLauncher

我通过在 AppService->Configuration->General Settings->Startup 命令中提供启动命令解决了这个问题

java -jar <path_of_jar> 

您也可以查看容器日志,请参阅下面的链接。 [https://docs.microsoft.com/en-us/azure/app-service/troubleshoot-diagnostic-logs]

如果你正在登录一个文件,那么你可以通过SSH[Azure门户->AppService->左侧有一个SSH选项]到容器和tail直接登录日志,但有时很难得到使用 ssh 进入容器,因为它没有正常启动。

【讨论】:

【参考方案2】:

我终于设法解决了这个问题。默认情况下,应用服务配置设置为使用 Jetty 作为 Web 容器而不是 Tomcat。可能该服务试图验证 Jetty 是否已启动并正在运行,并且由于它不是服务不断重新启动。 一旦我将配置设置为 Tomcat,问题就解决了。

【讨论】:

【参考方案3】:

您的application.properties 应该有:

logging.level=DEBUG
logging.level.org.springframework=DEBUG
logging.file=/home/LogFiles/boot.log

boot.log 应该会给你更多关于接下来要寻找什么的信息。

【讨论】:

试过 /home/LogFiles/boot.log 但发现将以下内容添加到 web.config 文件中可以代替 -Dlogging.file="%HOME%\LogFiles\boot.log"跨度>

以上是关于Azure App Service - Spring Boot 应用程序在启动时卡住的主要内容,如果未能解决你的问题,请参考以下文章

如何将Azure DevOps中的代码发布到Azure App Service中

Azure App Service 托管内部技术

Azure App Service

Web API系列教程3.10 — 实战:处理数据(发布App到Azure App Service)

如何处理 Azure App Service WebSockets 超时?

如何将Azure DevOps中的代码发布到Azure App Service中