問題タブ [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.

0 投票する
1 に答える
194 参照

erlang - Erlang は、パラメーターを使用してスーパーバイザーを生成します

次のように作成されたサーバーがあります。

gateway.erl (スーパーバイザーのスーパーバイザー) -> gateway_sup.erl (gen_servers のスーパーバイザー) -> gateway_serv.erl (すべてのクライアントが処理される場所)。

インターネットで見たように、これはかなり基本的なもので、ほとんどの人がこのようにやっています.

リッスン ソケットは、gateway_sup.erl で作成されます。クライアント ポートの制限がある場合に備えて、複数のソケットでリッスンしたいと考えています。

これまでのコードは次のとおりです。

ゲートウェイ.erl

gateway_sup.erl

gateway_sup.erl の start_link() 関数は呼び出されません。ゲートウェイが one_for_one で、パラメーターを渡そうとしない場合、すべて正常に動作しますが、ハードコードされた 1 つのポートのみをリッスンします。

gateway_sup:start_link/1 を呼び出さない理由がわかりませんか?

0 投票する
1 に答える
192 参照

erlang - Erlang: Supervisor:start_child/2 エラーで困惑しました

Logan/Merritt/Carlson の単純なキャッシュ、Chapter 6、pp 149-169、Erlang and OTP in Action に若干の変更を加えています。これまでのところ、モジュールの名前を変更するだけで、コードの変更はありません。

アプリケーションを開始します。

アイテムを挿入します:

次のエラーが表示されます。

コードは次のとおりです。

15行目を見てください:

これは新しいアイテムなので、エラーになると思います。gridz:edit は gen_server (Logan などの sc_element) です。 create/1 のコードは次のとおりです。

gridz_sup:start_child/2 のコードは次のとおりです。

Supervisor:start_child/2 を直接実行すると、次のようになります。

gridz_edit の 51 行目は init 関数です。

直接実行すると、動作します:

だから今、私は当惑しています。私は何が欠けていますか?Supervisor:start_child/2 がエラーをスローするのはなぜですか?

ありがとう、

LRP

0 投票する
1 に答える
337 参照

erlang - OTP: 非 OTP コンポーネントを監視するには?

MochiWeb Web サーバー、いくつかのカスタム Erlang/OTP アプリケーション、および次のいくつかの非ネイティブ コンポーネントで構成される Erlang/OTP システムを構築しています。

  • MochiWeb Web サーバーの状態と永続データ (ユーザー、アカウントなど) の両方を格納する CouchDB データベース
  • 他のいくつかのエンティティ (注文、アカウントなど。クライアントの要件: CouchDB に移行することはできません。データはそのまま使用する必要があります) を格納するためのレガシー PostgreSQL データベース。
  • システムのユーザーに電話通知を提供するアスタリスク サーバー。

高レベルのアップタイムと可用性を実現したいと考えているため、システムの Erlang/OTP 以外の要素を監視する最善の方法を知りたいと考えています。基本的に、システムの各要素を監視、監視し、必要に応じて再起動したいと考えています。Erlang/OTP アプリケーションでは簡単に実現できますが、Erlang 以外のコンポーネントでそれを行う方法がわかりません。


それらを Erlang/OTP アプリケーションとしてラップし、OTP 監視ツリーに含める必要がありますか?

それとも、Erlang/OTP システムの Erlang/OTP 以外のコンポーネントを監視および監督するために、サードパーティのソフトウェア ツールを使用する必要がありますか?

それを行うための最もよく知られている方法は何ですか?

0 投票する
1 に答える
692 参照

erlang - Erlang の監視とアプリケーション

個別のアプリケーションとして独立できる監視対象コンポーネントが多数あります。しかし、あるコンポーネントのワーカーの呼び出しまたはイベントが逆ツリーのような構造で次のコンポーネントを開始するようにそれらをカスケードしたいと思います。

1) これらの各コンポーネントを個別のアプリケーションとしてパッケージ化できますか? 2) その場合、子アプリケーションを起動するための呼び出しコードをどのように記述すればよいですか? 3) それとも、まったく別のことをする必要がありますか? もしそうなら、何をしますか?

注: 私はまだ監視ツリーの習得に取り組んでいます。application:start(Mod) に続く一連のイベントは、まだ頭に焼き付いていません。

どうもありがとう、

LRP

0 投票する
1 に答える
361 参照

erlang - Erlang: dets を開いて監視下に置いておくべきですか?

私はデータを dets に出し入れしていますが、選択肢があります。次のいずれかを実行できます。

1) アクセスする直前に dets を開き、直後に閉じる、または

2) クラッシュが発生した場合に再オープンするスーパバイザに dets をリンクします。たとえば、次のようなスーパーバイザーを使用して gen-server を介して dets にアクセスします。

どれが最高ですか?それとも、まだより良い選択がありますか?

どうもありがとう、

LRP

0 投票する
1 に答える
271 参照

erlang - スーパーバイザの下で Erlang アプリケーションを実行する方法

スーパーバイザの下で Erlang アプリケーションを実行するとはどういう意味ですか? 作り方の例があれば教えてください。