Meine Nodejs-App dauert eine Weile, bevor sie Anforderungen annehmen kann (Ressourcen werden kompiliert usw.).Wie kann ich "Online" -Ereignis von Cluster-Prozessen unter PM2 verzögern?
Wenn ich es im Cluster-Modus unter PM2 und Trigger-Reload ausführen, beginnt PM2 Instanzen nacheinander neu zu laden - aber es wartet nicht, bis die Anwendung tatsächlich Anfragen annehmen kann, und fährt fort, andere Instanzen neu zu starten - welche Dies führt dazu, dass alle Instanzen für einige Zeit nicht verfügbar sind.
Durch die PM2-Quelle scheint es, dass es auf "Online" -Ereignis vom Arbeitsprozess wartet, und dieses Ereignis geschieht zu früh.
Gibt es eine Möglichkeit, dieses Online-Ereignis zu verzögern, um ein normales Nachladen zu erreichen?
Hier ist der Testfall:
var http = require("http");
setTimeout(() => {
var server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("hello\n");
});
server.listen(7000, "127.0.0.1",() => {
console.log("server ready");
});
}, 10000);
beginnen mit pm2 start app -i 2
, dann mit pm2 reload app
Nachladen versuchen. Auf meinem Rechner ist es etwa 4s Fenster, wenn App reagiert nicht auf alle Anfragen:
curl: (7) Failed to connect to localhost port 7000: Connection refused
(Sie bequem überwachen kann, wenn App online watch curl -sS localhost:7000
ist)