尽管JVM将translate SIGTERM and similar signals to shutdown hooks,但许多服务关闭脚本使用TCP端口启动关机。(例如Tomcat的关闭端口、Java Service Wrapper、JBoss的管理接口等)
因此,我认为使用信号和关闭挂钩来优雅地关闭java服务是不可取的,直到我发现Play! framework is managing the service lifecycle with shutdown hooks和play dist生成的启动脚本假设一个信号将被发送到JVM的PID。
我知道信号依赖于平台,使用TCP端口是以跨平台的方式管理服务的简单和可扩展的方式,但我想知道当我依赖SIGTERM和关闭挂钩作为服务关闭的主要方法时,它有多安全,需要考虑哪些风险。
发布于 2014-07-14 11:49:40
只要Java服务明智地使用ShutdownHooks进行有序终止,将SIGTERM发送到JVM进程就没有问题。例如,我们使用SIGTERM作为在我们的大型高负载生产系统(运行80个不同5000+应用程序的5000+服务器)中启动应用程序关闭的主要方法。
https://stackoverflow.com/questions/24728586
复制相似问题