web-dev-qa-db-ja.com

プロセスが停止した場合にプロセスを再起動するには、upstart、run run、supervisor、daemon toolsなどをどのように選択すればよいですか?

Nginx Webプロキシ、gunicorn Webサーバー、およびpython/flask Webアプリがあります。 Gunicornプロセスは明らかに停止しました。Gunicornプロセスが再びクラッシュした場合に監視および再起動できるユーティリティを調べることで、将来的にはそれを改善したいと考えています。

私は仕事をすることができるいくつかを見つけました:

  • 新興
  • それを実行します
  • 監督者
  • デーモンツール
  • もっともっと

プロセスの監視と再起動に使用されるさまざまなユーティリティを比較対照する包括的な記事はありますか?

13
Matthew Moisen
  • runitdaemontoolsの後継です(どちらもcで作成されています)

  • supervisordpythonを使用します。

runitsocklogを同じ作者が Alpine Linuxlxcコンテナー内で約10か月間使用して、web/databaseなどのさまざまなサービスを管理しています。軽量で管理が簡単で、サービス障害は発生していません。ロギングデーモンは、ニースであるrootではなく、自身のユーザーとしても実行されます。

voidlinuxrunitシステムと同様にinitシステムを使用し、さらに service supervision も使用します(runスクリプトの例については、パッケージツリーでrunitファイルを検索してください)。

3
Stuart Cardall

ディストリビューションでUpstartを使用している場合は、それを使用してください。ジョブの再起動は非常に基本的にサポートされていますが、@ EEAAで言及されているように、再起動ループを防止できる制限が含まれています。

OSが別のinitプログラムを使用している場合は、変更しないでください。私は通常、(最新のLTSの時点で)Upstartがまだ存在するUbuntuを使用しているので、あなたが言及した他のツールを実際に支援することはできません。しかし、PIDが存在するかどうかを確認し、失敗時に再起動を発行できるcronから1分に1回(またはループ内でより頻繁に)実行される単純なスクリプトを作成することは難しくありません。

2
sam_pan_mariusz