Pm2を再起動の制限を--max-restarts
で制限しようとしましたが、機能せず、疲れましたmin_uptime
Sudo pm2 start server.js --max-restarts=5
yml
ファイルも試してみました
apps:
- name: node-mt
script: server-socket.js
watch: true
max_restarts: 5
min_uptime: 5000
しかし、それはアプリケーションの再起動を制限するものではありません。
pm2が定期的にクラッシュした場合、ホストシステムがクラッシュし、メモリ使用量が300mbから800mbに達しました。
アプリ実行時の通常の状態。
アプリケーションがクラッシュしたとき。その後、グラフは非常に高くなります。
メモリの使用率が高いためにホストがクラッシュしないように、最大再起動を停止する必要があります。メモリ使用量フラグを制限したくありません。
PM2 max_restarts
ane min_uptime
は完全に正常に動作します。両方の類似性を理解する必要があります。
ドキュメントに従って
アプリがエラーと見なされて再起動が停止するまでの不安定な再起動の連続数(1秒(デフォルト)間隔またはmin_uptimeによるカスタム時間)
つまり、min_uptimeが5000で、max_restartsが5の場合、アプリがクラッシュし、5000ミリ秒未満で5回再起動すると、アプリはエラーと見なされます。 5秒以内に4回再起動した場合、エラーとは見なされず、再起動が続行されます。
この設定でアプリが再起動し続ける場合、つまり、アプリが5秒間に5回再起動していないことを意味します。考えられる解決策は、1時間程度のmin_uptimeで比較的高い数値を与えるか、手動テストで見つけることができます。
私が初めてノードcronアプリでこの問題に遭遇し、次のデモを作成したとき、私はこれを理解する良い時間を持っています。
app.js
setTimeout(function () {
console.log('killed');
process.exit(1)
}, 100);
ecosystem.config.json
{
"apps" : [{
"name" : "api",
"script" : "./app.js",
"max_restarts" : 3,
"min_uptime" : 300
}]
}
これはプロセスを強制終了しますが、タイムアウトを130+に変更した場合(理由はわかりませんが、130未満の値で機能し、ms精度であり、最初の再起動まで設定を考慮しない可能性があります)、機能しません。アプリの再起動を開始します。
P.S。
min_uptime
も文字列で指定できます。