サーチ…


ダウンタイムなしで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