繁体   English   中英

spring-boot 2 优雅关机 web

[英]spring-boot 2 graceful shutdown web

有什么推荐的方法可以优雅地关闭 Kubernetes 中的 Spring:boot 2 应用程序。

  1. 捕捉终止信号 SIGTERM
  2. 告诉 Tomcat 停止接受新请求。 (或 Jetty、Undertow 或 Netty/WebFlux,具体取决于所使用的嵌入式 Web 服务器)。 或者告诉 SCS 停止发送/侦听 Kafka 上的消息。
  3. 告诉执行器健康端点去 SERVICE_UNAVAILABLE (503)
  4. 然后在 X 秒后关闭应用程序或 (SIGKILL)

我正在尝试正常关闭 Rest 应用程序和 SCS(kafka 消费者和生产者)应用程序

几周后我发现这篇文章在类似的背景下有些有用:

http://blog.marcosbarbero.com/graceful-shutdown-spring-boot-apps/

通过将SIGTERM发送到spring-boot服务来测试建议的示例

如果您使用的是最新版本的 spring-boot,即 2.3.5.RELEASE,那么您只需将以下属性添加到 application.properties 文件中即可。

server.shutdown=graceful spring.lifecycle.timeout-per-shutdown-phase=30s

在 Kubernetes 世界中,您可以使用 preStop 钩子。 但是,当您确实想要在 SIGTERM 启动之前暂停时使用它。

在容器终止之前立即调用此钩子。 没有参数传递给处理程序。 此事件处理程序是阻塞的,并且必须在删除容器的调用发送到 Docker 守护程序之前完成。 Docker 发送的 SIGTERM 通知也仍然发送。 终止行为的更完整描述可以在 Pod 的终止中找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM