Azure Spring Boot应用启动后立即收到SIGTERM,无法完成更新求助
检查Azure健康检查配置
Azure App Service或容器服务会在健康检查失败时发送SIGTERM终止进程。确认健康检查路径(比如/actuator/health)是否正确配置,Spring Boot Actuator是否启用,启动过程中该端点能否正常返回200状态码。如果健康检查超时或返回非成功状态,Azure会判定应用未就绪并终止进程。分析启动日志细节
- 在Azure门户打开应用服务的日志流,实时监控启动过程输出,重点关注收到SIGTERM前的日志,排查是否有报错、依赖服务连接失败、资源不足等异常。
- 导出Spring Boot应用的完整启动日志(如
logs/application.log),检查终止前是否存在未处理异常、Bean初始化失败、数据库连接超时等问题。
排查资源配额限制
查看Azure应用服务的定价层配置,确认内存、CPU配额是否充足。如果启动时内存占用超过配额,Azure会触发OOM Killer发送SIGTERM。可在Azure门户“性能”面板查看实时资源使用情况,或在日志中搜索OutOfMemoryError关键词。验证部署策略与CI/CD流程
若使用滚动部署或自动缩放配置,确认是否存在旧实例未正常关闭导致的冲突,或自动缩放规则误触发实例终止。同时检查CI/CD流水线(如Azure DevOps、GitHub Actions)的部署脚本,排查是否存在手动发送SIGTERM的命令,或部署步骤逻辑错误导致提前终止新实例。检查Spring Boot优雅停机配置
确认application.properties/application.yml中的优雅停机参数:server.shutdown=graceful spring.lifecycle.timeout-per-shutdown-phase=30s若超时时间过短,可能导致Azure认为应用未及时响应而强制终止。同时检查应用中是否有未处理的异步任务、长连接(如数据库、MQ),这类场景可能导致优雅停机超时,触发SIGTERM。
查看Azure平台活动日志
在Azure门户的“活动日志”中搜索应用实例的终止事件,查看事件详情中的终止原因,比如平台维护、资源回收、配置变更触发的重启等。
内容的提问来源于stack exchange,提问作者Bernd Hopp

