2016-04-05 25 views
3

私は、ノードstrongloopアプリケーションとそれがクラッシュした場合、それは自動的に再起動することの必要性を実行しています。ノードアプリケーションを自動再起動する最良の方法は何ですか?また、これらのクラッシュが発生したときに通知されることもありますか?ノードアプリケーションを自動再起動する方法は?

答えて

1

あなたは常にアプリが実行されていることを確認し、必要に応じて再起動するサービスを書くことができます(あなたのアプリケーションは、Linux上で実行されていると仮定)。ここではどのようにサービスを書くのだ:

http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html

5

あなたは(http://strong-pm.io/)、PM2(http://pm2.keymetrics.io/)Strongloopプロセスマネージャなどのプロセスマネージャを使用することができますと永遠に(https://github.com/foreverjs/forever)。これらの3つの比較も確認してください(http://strong-pm.io/compare/)。また、サーバーの再起動とともに通知のPM2・モニター(https://www.npmjs.com/package/pm2-monitor)を確認することができます。私はそれを維持するためにinit.dを使用してい

3

ほとんどのLinuxシステムでは、最近、このプロセスはずっと簡単かつ効率的になり、私たちはもはや永遠必要がないことを意味し、systemdを使用するように切り替えています。

必要なのは、次のとおりです。

  1. サービスファイル/etc/systemd/system/nodeserver.serviceを作成します。

  2. systemctl enable nodeserver.serviceしてサービスを有効にします。

  3. systemctl start nodeserver.serviceでサービスを開始し

あなたは常に次のコマンドを実行して、その可用性を確認することができます。 systemctl status nodeserver.service

サービスファイルを変更した場合は、サービスsystemctl restart nodeserver.serviceを再ロードする前にsystemctl daemon-reloadを実行する必要があります。

.serviceファイルの例:ところで

[Unit] 
Description=Node.js Example Server 
#Requires=After=mysql.service  # Requires the mysql service to run first 

[Service] 
ExecStart=/usr/local/bin/node /opt/nodeserver/server.js 
Restart=always 
RestartSec=10      # Restart service after 10 seconds if node service crashes 
StandardOutput=syslog    # Output to syslog 
StandardError=syslog    # Output to syslog 
SyslogIdentifier=nodejs-example 
#User=<alternate user> 
#Group=<alternate group> 
Environment=NODE_ENV=production PORT=1337 

[Install] 
WantedBy=multi-user.target 

StrongLoopに関するベストプラクティスやsystemdが言及されてからの公式の記事があります。Read more.

また、あなたはstrongloopみんなでnodejsとstrongloopのために構築され、このモジュールで見たいと思うかもしれません:https://github.com/strongloop/strong-service-systemd

1

PM2、永遠にあなたのノードのプロセスを管理するための良い方法です。 PM2は、CPU /メモリ/ログを簡単に取得できるように、フレンドリーなグラフィカルインタフェースを提供することです。

私は別の興味深いアイデアを提供します:ドッカー。あなたはdocker hub

からドッキングウィンドウの画像を使用して、ランタイム環境を構築し、それを実行することができます

ドッキングウィンドウの実行-it [ノード画像]ノードを[あなたのscript.js]

あなたが管理することができます再起動の引数を使用してプロセスのライフサイクルを調整します。

ドッカーは、次の再起動ポリシーをサポートしています。それが終了したときに

  1. [いいえ] は自動的にコンテナを再起動しないでください。これはデフォルト値です
  2. [失敗] コンテナがゼロ以外の終了ステータスで終了した場合にのみ再起動します。必要に応じて、Dockerデーモンが再試行する回数を制限します。
  3. [常に] 終了ステータスにかかわらず常にコンテナを再起動してください。 alwaysを指定すると、Dockerデーモンはコンテナを無期限に再起動しようとします。コンテナは、コンテナの現在の状態にかかわらず常にデーモンの起動時に開始されます。
関連する問題