問題タブ [erlang-supervisor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - クライアント処理プロセスをスーパーバイザー ツリーに追加する必要がありますか?
Erlang には、tcp/ip 接続を受け入れるプロセスを含むプロセスのスーパーバイザー ツリーがあります。着信接続ごとに、新しいプロセスを生成します。このプロセスをスーパーバイザー ツリーに追加する必要がありますか?
よろしく、スティーブ
erlang - Erlang のスーパーバイザー ツリーを説明するには?
監視ツリーについて説明してみました。
私の最善の試みは次のとおりです。
わかりました、工場からチョコレートの箱が届きます。「すべてのビットがおいしい」という保証が付いています。そして、その味がおかしいと感じたら。箱ごと捨てることができます。工場から新品を手に入れるからです。これは、Erlang の監視ツリーのようなものです。1 つのスレッドが誤動作した場合。すべてのスレッドの状態が悪い可能性があります。その場合、スーパーバイザーはすべてのスレッドを破棄して最初からやり直します。チョコレートの箱のように、箱を投げるときはあなたが監督者です。
erlang - Erlang: カスケードされたスーパーバイザー?
アプリケーション内でスーパーバイザーをカスケードすることは可能ですか?
たとえばsup1
、スーパーバイザーを作成する子プロセスを生成するスーパーバイザーsup2
?
erlang - erlangOTPスーパーバイザーがクラッシュする
私はErlangのドキュメントを調べて、OTPgen_serverとスーパーバイザーのセットアップの基本を理解しようとしています。gen_serverがクラッシュするたびに、スーパーバイザーもクラッシュします。実際、コマンドラインでエラーが発生すると、スーパーバイザーがクラッシュします。
クラッシュしたときにgen_serverが再起動されることを期待しています。コマンドラインエラーは、サーバーコンポーネントにはまったく関係がないと思います。私の上司はまったく墜落してはいけません。
私が使用しているコードは、送信したものすべてに応答する基本的な「エコーサーバー」と、1分間に最大5回(one_for_one)echo_serverを再起動するスーパーバイザーです。私のコード:
echo_server.erl
echo_sup.erl
を使用してコンパイルされerlc *.erl
、次のサンプルが実行されます。
erlang - シェルから erlang スーパーバイザを起動できない
gen_server と Supervisor:test_server
とtest_sup
. シェル/CLI からテストしたい。start_link
名前がローカルに登録されるように関数を記述しました。
test_server
コマンドラインから問題なく生成できることがわかりましたが、生成test_sup
された ではサーバーとのやり取りがまったくできません。
たとえば、次のコマンドtest_server
を実行して a を生成できます。
サーバーと対話でき、すべて正常に表示されます。
ただし、 で同じことをしようとするとtest_sup
、「CLI プロセス」( を使用registered/0
) に新しい名前/Pid が登録されません。私のtest_server
は生成されたように見えますが、それと対話することはできません (これが本当である理由については、SASL に関する Lukas Larsson のコメントを参照してください)。
スーパーバイザーでエラーをコーディングしたと思いますが、スーパーバイザーを起動するこの方法は完全に正常に機能します。
gen_server を作成できるのにスーパーバイザを作成できないのはなぜですか?
アップデート
私が使用しているコードは、この投稿にあります。私はecho_server
とecho_sup
、2 つの非常に単純なモジュールを使用しています。
そのコードを考えると、これは機能します:
これはしません:
erlang - ダウンしたホストへの接続を再開するための Erlang Supervisor 戦略
私はサービス間のブリッジとして erlang を使用していますが、ダウンした接続を処理するために人々がどのようなアドバイスをしたのか疑問に思っていました。
ローカル ファイルから入力を取得して AMQP にパイプしますが、AMQP ブローカーがダウンする可能性があります。その場合、AMQP サーバーへの接続を再試行し続けたいと思いますが、それらの接続試行で CPU を固定したくありません。私の傾向は、AMQP コードの再起動をスリープ状態にすることです。その「ハック」は本質的に、すぐに失敗して erlang に処理させるという目的を回避するのではないでしょうか? より一般的には、ダウンした接続の処理に erlang スーパーバイザーの動作を使用する必要がありますか?
erlang - Erlang アプリケーションの自動再起動
最近、Erlang アプリケーション全体が停止するバグに遭遇し、次のようなログ メッセージが生成されました。
何がこのシャットダウンを引き起こしたのかわかりませんが、私が抱えている本当の問題は、それ自体が再起動しなかったことです. 代わりに、空になった Erlang VM はただそこに座って何もしませんでした。
今、私が行った調査から、アプリケーションに与えることができる他の「開始タイプ」があるように見えます:「一時的」と「永続的」。
アプリケーション内でスーパーバイザーを起動すると、特定のプロセスを一時的または永続的にするように指示でき、自動的に再起動します。ただし、ドキュメントによると、アプリケーションを一時的または永続的にすると、アプリケーションが終了しても再起動せず、他のすべてのアプリケーションも強制終了します。
私が本当にやりたいことは、Erlang VM に、特定のアプリケーションを常に実行し、ダウンした場合は再起動するように指示することです。これは可能ですか?
(アプリケーションの上にスーパーバイザを実装することについて話しているわけではありません。なぜなら、それはキャッチ 22: スーパーバイザ プロセスがクラッシュした場合はどうなるでしょうか? Erlang で監視し、アプリケーションを再起動してください。)
ありがとう!
erlang - OTPプロセスのスーパーバイザーを見つける方法は?
OTPプロセスがスーパーバイザーのpidを見つけることを可能にする機能はありますか?
java - Javaアプリケーションを監視するErlangOTP
私は最近Erlang/OTPテクノロジーに精通しており、次の点でJavaアプリケーションを監視および監視するためにそれを適用したいと思います。
- それらの可用性の検出
- それらの開始と停止
言い換えれば、JavaアプリケーションがErlang OTPスーパーバイザーインフラストラクチャーによって、それらのスーパーバイザーによって管理できる通常のErlangアプリとして認識されるようにしたいと思います(ハートビートの送信、オンデマンドでの停止と開始)。それは実行可能ですか?はいの場合、どのツールを使用する必要がありますか?
簡単にするために、 JavaアプリケーションがMainクラスが指定された単純なjarであると仮定します。これらのアプリケーションのインストルメンテーション/拡張は許可されています。