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中
Web API系列教程3.10 — 实战:处理数据(发布App到Azure App Service)