問題タブ [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 は、パラメーターを使用してスーパーバイザーを生成します
次のように作成されたサーバーがあります。
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 を呼び出さない理由がわかりませんか?
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
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 以外のコンポーネントを監視および監督するために、サードパーティのソフトウェア ツールを使用する必要がありますか?
それを行うための最もよく知られている方法は何ですか?
erlang - Erlang の監視とアプリケーション
個別のアプリケーションとして独立できる監視対象コンポーネントが多数あります。しかし、あるコンポーネントのワーカーの呼び出しまたはイベントが逆ツリーのような構造で次のコンポーネントを開始するようにそれらをカスケードしたいと思います。
1) これらの各コンポーネントを個別のアプリケーションとしてパッケージ化できますか? 2) その場合、子アプリケーションを起動するための呼び出しコードをどのように記述すればよいですか? 3) それとも、まったく別のことをする必要がありますか? もしそうなら、何をしますか?
注: 私はまだ監視ツリーの習得に取り組んでいます。application:start(Mod) に続く一連のイベントは、まだ頭に焼き付いていません。
どうもありがとう、
LRP
erlang - Erlang: dets を開いて監視下に置いておくべきですか?
私はデータを dets に出し入れしていますが、選択肢があります。次のいずれかを実行できます。
1) アクセスする直前に dets を開き、直後に閉じる、または
2) クラッシュが発生した場合に再オープンするスーパバイザに dets をリンクします。たとえば、次のようなスーパーバイザーを使用して gen-server を介して dets にアクセスします。
どれが最高ですか?それとも、まだより良い選択がありますか?
どうもありがとう、
LRP
erlang - スーパーバイザの下で Erlang アプリケーションを実行する方法
スーパーバイザの下で Erlang アプリケーションを実行するとはどういう意味ですか? 作り方の例があれば教えてください。