spring-boot 2 优雅关闭网络
Posted
技术标签:
【中文标题】spring-boot 2 优雅关闭网络【英文标题】:spring-boot 2 graceful shutdown web 【发布时间】:2018-12-23 23:02:20 【问题描述】:是否有任何推荐的方式来优雅地关闭 Kubernetes 中的 Spring:boot 2 应用程序。
-
捕获终止信号 SIGTERM
告诉 Tomcat 停止接受新请求。 (或 Jetty、Undertow 或 Netty/WebFlux,具体取决于所使用的嵌入式 Web 服务器)。或者告诉 SCS 停止在 Kafka 上发送/收听消息。
告诉 Actuator 健康端点转到 SERVICE_UNAVAILABLE (503)
然后在 X 秒后关闭应用程序或 (SIGKILL)
我正在尝试正常关闭 Rest 应用和 SCS(kafka 消费者和生产者)应用
【问题讨论】:
在 Kubernetes 中推荐的方法 【参考方案1】:如果您使用的是最新版本的 spring-boot,即 2.3.5.RELEASE,那么您只需将以下属性添加到 application.properties 文件即可。
server.shutdown=优雅 spring.lifecycle.timeout-per-shutdown-phase=30s
在 Kubernetes 世界中,您可以使用 preStop 挂钩。但是,当您真正想要在 SIGTERM 启动之前暂停时,请使用此选项。
在容器终止之前立即调用此钩子。没有参数传递给处理程序。此事件处理程序是阻塞的,并且必须在删除容器的调用发送到 Docker 守护程序之前完成。 Docker 发送的 SIGTERM 通知也仍然发送。终止行为更完整的描述可以在 Pod 的终止中找到。
【讨论】:
以上是关于spring-boot 2 优雅关闭网络的主要内容,如果未能解决你的问题,请参考以下文章
无法将 spring-boot 2 服务连接到不同容器中的 mysql
我遇到了使用 spring-boot 2.0.2.RELEASE 进行 Hibernate/lucene 搜索的问题