最近、Erlang アプリケーション全体が停止するバグに遭遇し、次のようなログ メッセージが生成されました。
=INFO REPORT==== 11-Jun-2010::11:07:25 ===
application: myapp
exited: shutdown
type: temporary
何がこのシャットダウンを引き起こしたのかわかりませんが、私が抱えている本当の問題は、それ自体が再起動しなかったことです. 代わりに、空になった Erlang VM はただそこに座って何もしませんでした。
今、私が行った調査から、アプリケーションに与えることができる他の「開始タイプ」があるように見えます:「一時的」と「永続的」。
アプリケーション内でスーパーバイザーを起動すると、特定のプロセスを一時的または永続的にするように指示でき、自動的に再起動します。ただし、ドキュメントによると、アプリケーションを一時的または永続的にすると、アプリケーションが終了しても再起動せず、他のすべてのアプリケーションも強制終了します。
私が本当にやりたいことは、Erlang VM に、特定のアプリケーションを常に実行し、ダウンした場合は再起動するように指示することです。これは可能ですか?
(アプリケーションの上にスーパーバイザを実装することについて話しているわけではありません。なぜなら、それはキャッチ 22: スーパーバイザ プロセスがクラッシュした場合はどうなるでしょうか? Erlang で監視し、アプリケーションを再起動してください。)
ありがとう!