Anmutig Herunterfahren UNIX-socket-server, der auf NodeJS läuft unter Forever

Habe ich eine NodeJS Anwendung setzt ein UNIX-socket zu setzen einige interprocess communication channel (eine Art monitoring-Zeug). UNIX-socket-Datei in os.tmpdir() Ordner (also /tmp/app-monitor.sock).

var net = require('net');
var server = net.createServer(...);
server.listen('/tmp/app-monitor.sock', ...);

Benutze ich ein signal handling (SIGINT, SITERM, etc...) ordnungsgemäß Herunterfahren meines Servers, und entfernen Sie eine socket-Datei.

function shutdown() {
    server.close(); //socket file is automatically removed here
    process.exit();
}

process.on('SIGINT', shutdown);
//and so on

Meine Anwendung ausgeführt wird, mit forever start ... überwachung des Lebenszyklus.

Ich habe ein problem mit forever restartall Befehl. Wenn für immer tun restartall es mit einem SIGKILL beenden aller child-Prozesse. SIGKILL können nicht behandelt werden, durch einen Prozess, so dass meine app stirbt ohne shutdown-Verfahren.

Das problem ist eine socket-Datei, die nicht entfernt werden, wenn SIGKILL verwendet wird. Nach der Kind-Prozess wird neu gestartet, neue server kann nicht gestartet werden Ursache' eine listen Anruf wird zu einer EADDRINUSE Fehler.

Ich kann nicht entfernen Sie eine vorhandene socket-Datei bei einem app-Start führen: "ich weiß nicht, ob es eine wirklich funktionierende Steckdose oder einige Spuren von einer früheren unsauberen Herunterfahren.

So, die Frage ist... Was ist der bessere Weg, um mit solchen situation (SIGKILL-und UNIX-socket-server)?

  • haben u Lesen Sie dieses nodejs.org/api/all.html#all_signal_events
  • Ja, und hast du gelesen, meine Frage?
  • Nein habe ich nicht gelesen. Es ist leicht zu sagen als zu tun. Wenn Sie nichts dagegen haben, ändern Sie den code in ewig, dann forever/node_modules/forever-monitor/lib/forever-monitor/monitor.js in fuunction Monitor.der Prototyp.töten fügen Sie die SIGINT, bevor Sie für immer senden das signal SIGKILL
  • Dies ist eine schlechte Lösung. Ich will nicht zu ändern 3rd-party-software. Auch mein Prozess getötet werden dürfen mit SIGKILL, ohne für immer...
  • FYI node-dev - sendet eine SIGTERM ist abfangbar.
InformationsquelleAutor Olegas | 2013-04-23
Schreibe einen Kommentar