Node.js
ダウンタイムなしでNode.jsアプリケーションを配備する。
サーチ…
ダウンタイムなしでPM2を使用した展開。
ecosystem.json
{
"name": "app-name",
"script": "server",
"exec_mode": "cluster",
"instances": 0,
"wait_ready": true
"listen_timeout": 10000,
"kill_timeout": 5000,
}
wait_ready
リスン・イベントを待つのをリロードするのではなく、process.send( 'ready')を待ちます。
listen_timeout
アプリケーションがリッスンしていない場合にリロードを強制するまでの時間(ミリ秒)。
kill_timeout
最後の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);
});
});
アプリケーションがあなたのDB /キャッシュ/ワーカー/との接続を確立するのを待つ必要があるかもしれません。 PM2は、アプリケーションをオンラインであるとみなす前に待機する必要があります。これを行うには、プロセスファイルにwait_ready: true
を指定する必要があります。これにより、PM2はそのイベントを待ち受けます。アプリケーションでは、 process.send('ready');
を追加する必要がありprocess.send('ready');
あなたのアプリケーションを準備ができていると見なしたいとき。
プロセスがPM2によって停止/再開されると、システム信号の中には特定の順序でプロセスに送信されるものがあります。
まずSIGINT
シグナルがプロセスに送られます。プロセスが停止することを知るためにシグナルを捕まえることができます。 1.6s(カスタマイズ可能)より前にアプリケーションが単独で終了しない場合は、強制的にSIGKILL
を受け取ってプロセスを終了させます。したがって、アプリケーションが何らかの状態やジョブをクリーンアップする必要がある場合は、 SIGINT
シグナルをキャッチしてアプリケーションの終了を準備することができます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow