Node.js
Distribuera Node.js-applikation utan driftstopp.
Sök…
Distribution med PM2 utan driftstopp.
ecosystem.json
{
"name": "app-name",
"script": "server",
"exec_mode": "cluster",
"instances": 0,
"wait_ready": true
"listen_timeout": 10000,
"kill_timeout": 5000,
}
wait_ready
Istället för att ladda om att vänta på lyssningshändelse, vänta på process.send ('redo');
listen_timeout
Tid i ms innan du tvingar en ny laddning om app inte lyssnar.
kill_timeout
Tid i ms innan du skickar en 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);
});
});
Du kanske måste vänta på att din ansökan har upprättat anslutningar med dina DB: er / cachar / arbetare / vad som helst. PM2 måste vänta innan du anser din ansökan som online. För att göra detta måste du ange wait_ready: true
i en processfil. Detta kommer att få PM2 att lyssna på det evenemanget. I din ansökan måste du lägga till process.send('ready');
när du vill att din ansökan ska betraktas som redo.
När en process stoppas / startas om av PM2, skickas vissa systemsignaler till din process i en given ordning.
Först en SIGINT
en signal skickas till dina processer, signal du kan fånga för att veta att din process kommer att stoppas. Om din applikation inte avslutar av sig själv innan 1.6s (kan anpassas) kommer den att få en SIGKILL
signal för att tvinga processen att avsluta. Så om din applikation behöver städa upp något säger eller jobb kan du fånga SIGINT
signalen för att förbereda din ansökan att avsluta.