Поиск…


Развертывание с использованием PM2 без простоя.

ecosystem.json

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

Вместо перезагрузки, ожидающего прослушивания, подождите process.send ('ready');

listen_timeout

Время в мс перед тем, как заставить перезагружать, если приложение не прослушивает.

kill_timeout

Время в мс перед отправкой окончательного 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);
    });
});

Возможно, вам придется подождать, пока ваше приложение установит соединения с вашими DB / кэшами / рабочими / независимо. PM2 должен ждать, прежде чем рассматривать ваше приложение как онлайн. Для этого вам нужно предоставить wait_ready: true в файле процесса. Это заставит PM2 прослушать это событие. В вашем приложении вам нужно будет добавить process.send('ready'); когда вы хотите, чтобы ваше приложение считалось готовым.

Когда процесс останавливается / перезапускается PM2, некоторые системные сигналы отправляются в ваш процесс в определенном порядке.

Сначала сигнал SIGINT отправляется в ваши процессы, сигнализируя, что вы можете узнать, что ваш процесс будет остановлен. Если ваше приложение не выйдет за пределы до 1.6s (настраивается), он получит сигнал SIGKILL чтобы заставить процесс выйти. Поэтому, если вашему приложению необходимо очистить какие-либо состояния или задания, вы можете поймать сигнал SIGINT чтобы подготовить свое приложение к выходу.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow