Buscar..


Despliegue utilizando PM2 sin tiempo de inactividad.

ecosystem.json

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

En lugar de volver a cargar esperando el evento de escucha, espere process.send ('ready');

listen_timeout

Tiempo en ms antes de forzar una recarga si la aplicación no escucha.

kill_timeout

Tiempo en ms antes de enviar un SIGKLL final.

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);
    });
});

Es posible que deba esperar a que su aplicación haya establecido conexiones con sus DBs / caches / workers / lo que sea. PM2 debe esperar antes de considerar su solicitud como en línea. Para hacer esto, debe proporcionar wait_ready: true en un archivo de proceso. Esto hará que PM2 escuche ese evento. En su aplicación, deberá agregar process.send('ready'); cuando quieras que tu aplicación sea considerada como lista.

Cuando PM2 detiene / reinicia un proceso, algunas señales del sistema se envían a su proceso en un orden determinado.

Primero se envía una señal SIGINT a sus procesos, señal que puede detectar para saber que su proceso se detendrá. Si su aplicación no sale sola antes de 1.6s (personalizable), recibirá una señal SIGKILL para forzar la salida del proceso. Entonces, si su aplicación necesita limpiar algunos estados o trabajos, puede detectar la señal SIGINT para preparar su aplicación para salir.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow