Node.js
Bereitstellung der Node.js-Anwendung ohne Ausfallzeiten
Suche…
Bereitstellung mit PM2 ohne Ausfallzeiten.
ecosystem.json
{
"name": "app-name",
"script": "server",
"exec_mode": "cluster",
"instances": 0,
"wait_ready": true
"listen_timeout": 10000,
"kill_timeout": 5000,
}
wait_ready
Warten Sie nicht erneut auf das Warten auf Abhörereignis, sondern warten Sie auf process.send ('ready');
listen_timeout
Zeit in ms vor dem Erzwingen eines erneuten Ladens, wenn die App nicht auf sie wartet.
kill_timeout
Zeit in ms vor dem Senden einer endgültigen SIGKLL.
server.js
const http = require('http');
const express = require('express');
const app = express();
const server = http.Server(app);
const port = 80;
server.listen(port, function() {
process.send('ready');
});
process.on('SIGINT', function() {
server.close(function() {
process.exit(0);
});
});
Möglicherweise müssen Sie warten, bis Ihre Anwendung Verbindungen zu Ihren DBs / caches / workers / was auch immer hergestellt hat. PM2 muss warten, bevor Ihre Bewerbung als online betrachtet wird. Dazu müssen Sie wait_ready: true
in einer Prozessdatei wait_ready: true
. Dadurch wird PM2 auf dieses Ereignis hören. In Ihrer Anwendung müssen Sie process.send('ready');
hinzufügen process.send('ready');
wenn Sie möchten, dass Ihre Bewerbung als fertig betrachtet wird.
Wenn ein Prozess von PM2 gestoppt / erneut gestartet wird, werden einige Systemsignale in einer bestimmten Reihenfolge an Ihren Prozess gesendet.
Zuerst wird ein SIGINT
an Ihre Prozesse gesendet, ein Signal, das Sie erkennen können, dass Ihr Prozess gestoppt wird. Wenn Ihre Anwendung nicht vor 1.6s (anpassbar) beendet wird, erhält sie ein SIGKILL
Signal, um den Prozess zu beenden. Wenn Ihre Anwendung also Statuszustände oder Jobs bereinigen muss, können Sie das SIGINT
Signal SIGINT
, um Ihre Anwendung auf das Beenden vorbereiten.