尽管 JVM 会 translate SIGTERM and similar signals to shutdown hooks , 许多服务关闭脚本使用 TCP 端口来启动关闭。 (例如Tomcat的关闭端口、Java Service Wrapper、JBoss的管理接口(interface)等)
所以我认为不鼓励使用信号和关闭 Hook 来优雅地关闭 java 服务,直到我发现 Play! framework is managing the service lifecycle with shutdown hooks并且 play dist
生成的启动脚本假定信号将发送到 JVM 的 PID。
我知道信号是平台相关的,使用 TCP 端口是一种简单且可扩展的跨平台管理服务的方式,但我想知道它有多安全以及我需要考虑哪些风险,当我依赖 SIGTERM 和关闭 Hook 作为关闭服务的主要方法时。
最佳答案
只要Java服务明智地使用ShutdownHooks来有序终止,向JVM进程发送SIGTERM是没有问题的。例如。我们使用 SIGTERM 作为在我们的大型高负载生产系统(5000 多台服务器运行 80 种不同的 Java 应用程序)中启动应用程序关闭的主要方法。
关于java - 将 SIGTERM 发送到 JVM 是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24728586/