【问题标题】:What is the difference between using an actuator/shutdown vs SIGTERM to gracefully terminate a Spring application?使用执行器/关闭与 SIGTERM 优雅地终止 Spring 应用程序有什么区别?
【发布时间】:2019-08-11 05:49:01
【问题描述】:

我注意到 SIGTERM-ing 我的应用程序(通过 kill)和运行执行器/关闭之间的行为差​​异,但我无法理解它们为什么不同。

【问题讨论】:

  • 您能否详细说明通过调用执行器和发送 SIGTERM 的 bean 关闭之间的行为差​​异?
  • 两者都是从命令行运行的,其中一个是一个 java 文件,它将 POST 请求发送到localhost.com:5019/actuator/shutdown(响应是预期的{message: shutdown bye}),一个只是被杀死 [应用程序的pid]。在行为方面,关闭命令完成,但链接到 PID 的进程实际上并没有关闭。是的,端点是公开的,是的,端口号匹配。

标签: spring spring-boot spring-boot-actuator


【解决方案1】:

我发现了我的问题。在我的 @PreDestroy 方法中,我没有清理某些在 Spring 关闭时仍然处于活动状态的线程,因为它们不是由 Spring 管理的。

所以区别在于 Spring 的 Actuator 关闭不会清理不是由 Spring 管理的线程,而 SIGTERM 会。

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多