私は Nginx Web プロキシ、gunicorn Web サーバー、および python/flask Web アプリを持っています。Gunicorn プロセスはどうやら停止したようです。今後は、再度クラッシュした場合に gunicorn プロセスを監視して再起動できるユーティリティを検討して、この状況を改善したいと考えています。
この作業を実行できるプロセス監視ユーティリティをいくつか見つけました。
- デーモンツール
- 起動
- それを実行します
- s6
- 監督者
- システムD
- 成り上がり者
- ...
プロセスの監視と再起動に使用されるさまざまなユーティリティを比較対照する包括的な記事はありますか?
答え1
runit
は の後継ですdaemontools
(両方とも で書かれていますc
)supervisord
を使用しますpython
。
私は同じ著者のrunit
作品を使っていますsocklog
アルパインリナックス lxc
コンテナを約 10 か月間使用して、web
/database
およびその他のさまざまなサービスを管理しました。軽量で管理が簡単で、サービス障害も発生していません。ログ デーモンも独自のユーザーとして実行されるのでroot
便利です。
ボイドLinuxrunit
システムとして使用しinit
、またサービス監督run
(スクリプトの例については、パッケージ ツリーでファイルを検索してくださいrunit
)。
答え2
ディストリビューションが Upstart を使用している場合は、それを使用してください。これはジョブの再起動に対する非常に基本的なサポートを備えていますが、@EEAA が言及しているように、再起動ループを防ぐことができる制限が含まれています。
OSが別のinitプログラムを使用している場合は、変更しないでください。あなたが言及した他のツールについては、私は通常、Upstartがまだ存在するUbuntu(最新のLTS)を使用しているため、あまり役に立ちません。しかし、クローン1 分に 1 回 (またはループ内でより頻繁に)、PID が存在するかどうかを確認し、失敗した場合は再起動を発行します。