SpringBoot优雅停机实战
发版时偶发的 502 往往不是代码抛出的,而是停机链条上某个环节没有接上。本文用 Spring Boot 2.7 与 Tomcat 9 做对照实验,以 SIGTERM 为零点记录进行中的请求、新连接、keep-alive 连接和 SSE 的实际表现,说明优雅停机只保护已进入应用的请求;再依次排查启动脚本缺少 exec 导致 JVM 收不到信号、timeout-per-shutdown-phase 并非硬上限、Kubernetes preStop 与宽限期的预算,以及 Nginx 对 GET 与 POST 重试行为的差异,最后给出长连接收尾、线程池等待和发版期间的验证方法。