私のnodejsアプリケーションは要求を受け入れるまでに時間がかかります(リソースのコンパイルなど)。pm2のクラスタプロセスから「オンライン」イベントを遅延させる方法はありますか?
pm2でクラスタモードで実行し、リロードをトリガすると、pm2はインスタンスを1つずつリロードすることを開始しますが、アプリケーションが実際にリクエストを受け入れてから別のインスタンスを再開するまで待機しません。すべてのインスタンスがしばらくダウンしてしまいます。
pm2ソースを調べると、ワーカープロセスからの「オンライン」イベントを待っているようで、そのイベントは早すぎます。
通常のリロードを行うためにこのオンラインイベントを遅らせる方法はありますか? pm2 start app -i 2
と
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);
スタート、その後、pm2 reload app
でリロードしてみてください。
は、ここでのテストケースです。アプリは全く要求に応答しないとき、私のマシン上で は約4秒のウィンドウがあります:
curl: (7) Failed to connect to localhost port 7000: Connection refused
(アプリはwatch curl -sS localhost:7000
とオンラインであれば、あなたが便利に監視することができます)