Szukaj…


Wdrożenie przy użyciu PM2 bez przestojów.

ecosystem.json

{
    "name": "app-name",
    "script": "server",
    "exec_mode": "cluster",
    "instances": 0,    
    "wait_ready": true
    "listen_timeout": 10000,
    "kill_timeout": 5000,
}
wait_ready

Zamiast przeładowywać oczekiwanie na zdarzenie Listen, poczekaj na process.send ('ready');

listen_timeout

Czas w ms przed wymuszeniem przeładowania, jeśli aplikacja nie słucha.

kill_timeout

Czas w ms przed wysłaniem końcowego 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);
    });
});

Być może będziesz musiał poczekać, aż aplikacja nawiąże połączenie z twoimi bazami danych / pamięci podręcznej / pracownikami / czymkolwiek. PM2 musi poczekać, zanim uzna swoją aplikację za internetową. Aby to zrobić, musisz podać wait_ready: true w pliku procesu. Spowoduje to, że PM2 nasłuchuje tego zdarzenia. W swojej aplikacji musisz dodać process.send('ready'); gdy chcesz, aby Twoje podanie zostało uznane za gotowe.

Gdy proces zostaje zatrzymany / zrestartowany przez PM2, niektóre sygnały systemowe są wysyłane do twojego procesu w określonej kolejności.

Najpierw SIGINT wysyłany jest sygnał do procesów, sygnał, który można złapać, aby wiedzieć, że proces zostanie zatrzymany. Jeśli aplikacja nie zakończy się sama przed 1.6s (konfigurowalne), otrzyma sygnał SIGKILL wymuszający wyjście z procesu. Jeśli więc aplikacja wymaga wyczyszczenia stanów lub zadań, możesz przechwycić sygnał SIGINT , aby przygotować aplikację do wyjścia.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow