排查 Azure Spring Apps 中常见的退出代码问题

注意

Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。

本文介绍当 Azure Spring Apps 中的应用程序退出并出现错误代码时可执行的故障排除操作。 如果应用程序部署失败,或者应用程序在运行时退出,则可能会收到错误代码。

退出代码

退出代码指示应用程序终止的原因。 以下列表描述某些常见的退出代码:

  • 0 - 应用程序已退出,因为它已运行到完成阶段。 更新服务器应用程序,以便它持续运行。

    Azure Spring Apps 中部署的 Azure 应用应持续提供服务。 退出代码 0 表示应用程序未持续运行。 检查日志和源代码。

  • 1 - 如果应用程序退出且显示非零退出代码,请调试该代码和相关服务,然后再次部署应用程序。

    请考虑以下可能导致出现非零退出代码的原因:

    • Spring Boot 配置有问题。

      例如,需要 spring.db.url 参数才能连接到数据库,但在配置文件中找不到该参数。

    • 你已断开与第三方服务的连接。

      例如,你需要连接到 Redis 服务,但该服务不起作用或不可用。

    • 你对第三方服务没有足够的访问权限。

      例如,你需要连接到 Azure Key Vault 才能在应用程序中导入证书,但应用程序没有访问证书所需的权限。

  • 137 - 应用程序立即由托管平台终止,且没有宽限期。 此退出代码可能是由以下某种情况导致:

    • 当运行情况检查失败时,托管平台会在尝试终止应用程序并等待宽限期结束后立即终止该应用程序。 请确保应用程序正确处理正常关闭。

    • 由于内存不足错误,应用程序退出。 应用程序请求托管平台无法提供的资源。 请更新应用程序的 Java 虚拟机 (JVM) 参数以限制资源使用量或纵向扩展应用程序资源。

      如果应用程序是 Java 应用程序,请检查 JVM 参数值。 它们可能超出应用程序的内存限制。

      例如,假设将 JVM 参数 Xmx 设置为 10 GB,但应用程序最多使用 5 GB 内存。 减小 Xmx 值或增加应用程序内存,以确保 Xmx 参数的值小于或等于应用程序的内存限制。

  • 143 - 应用程序退出,原因是它因内存不足错误或其他错误而未能响应运行状况检查。

    此错误代码通常是因内存不足错误而生成的。 有关详细信息,请参阅内存不足问题引起的应用重启问题

    还可以使用 Azure CLI az spring app logs 命令从应用程序日志中获取详细信息。 有关详细信息,请参阅实时流式传输 Azure Spring Apps 应用程序控制台日志

后续步骤