2014-07-14 7 views
7

Obwohl JVM translate SIGTERM and similar signals to shutdown hooks, ist, verwenden viele Dienstabschaltskripts einen TCP-Port, um ein Herunterfahren zu initiieren. (ZB Tomcat Abschaltschlitz, Java Service Wrapper, JBoss Management-Schnittstellen, etc.)Ist es sicher, SIGTERM an JVM zu senden

Also dachte ich, Signale und Shutdown-Haken mit shutdown zu graziös Java-Dienste abgeraten, bis ich herausgefunden, dass Play! framework is managing the service lifecycle with shutdown hooks und die Startup-Skripte erzeugt durch play dist geht davon aus, dass Ein Signal wird an die PID der JVM gesendet.

Ich weiß, dass Signale plattformabhängig sind und die Verwendung eines TCP-Ports eine einfache und erweiterbare Möglichkeit darstellt, Services plattformübergreifend zu verwalten, aber ich würde gerne wissen, wie sicher es ist und welche Risiken ich berücksichtigen muss , wenn ich auf SIGTERM und Shutdown-Hooks als eine primäre Methode für das Herunterfahren von Diensten angewiesen bin.

Antwort

1

Solange der Java-Dienst ShutdownHooks mit Bedacht für eine geordnete Beendigung verwendet, gibt es kein Problem beim Senden von SIGTERM an den JVM-Prozess. Z.B. Wir verwenden SIGTERM als primäre Methode, um einen Anwendungsabbruch in unserem großen Hochlast-Produktionssystem (über 5000 Server mit 80 verschiedenen Java-Anwendungen) zu initiieren.

Verwandte Themen