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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow