Node.js
Node.js-applicatie implementeren zonder downtime.
Zoeken…
Implementatie met PM2 zonder downtime.
ecosystem.json
{
"name": "app-name",
"script": "server",
"exec_mode": "cluster",
"instances": 0,
"wait_ready": true
"listen_timeout": 10000,
"kill_timeout": 5000,
}
wait_ready
In plaats van te herladen wachten op luistergebeurtenis, wacht op process.send ('ready');
listen_timeout
Tijd in ms voordat opnieuw laden wordt geforceerd als app niet luistert.
kill_timeout
Tijd in ms voordat een laatste SIGKLL wordt verzonden.
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);
});
});
Mogelijk moet u wachten tot uw toepassing verbinding heeft gemaakt met uw DB's / caches / werknemers / wat dan ook. PM2 moet wachten voordat uw aanvraag als online wordt beschouwd. Hiertoe moet u wait_ready: true
in een procesbestand. Hierdoor zal PM2 naar dat evenement luisteren. In uw applicatie moet u process.send('ready');
wanneer u wilt dat uw aanvraag als gereed wordt beschouwd.
Wanneer een proces wordt gestopt / opnieuw gestart door PM2, worden sommige systeemsignalen in een bepaalde volgorde naar uw proces verzonden.
Eerst wordt een SIGINT
een signaal naar uw processen gestuurd, een signaal dat u kunt vangen om te weten dat uw proces wordt gestopt. Als uw toepassing niet vóór 1.6s (aanpasbaar) wordt SIGKILL
, ontvangt deze een SIGKILL
signaal om de procesuitgang te forceren. Dus als uw applicatie iets toestanden of taken moet opschonen, kunt u het SIGINT
signaal ontvangen om uw applicatie voor te bereiden op het afsluiten.