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