問題タブ [anyevent]
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.
perl - EV コールバック内で Perl の longjump のようなものを作成することは可能ですか?
非同期環境で同期制御フローをエミュレートしようとしています。
目的は、コールバックや要求時のブロックなしで DB 要求をサポートすることです。
モジュールを使用しようとしていCoro
ますが、完全には理解できていないようです。
コード スニペットは次のとおりです。
テストコードは次のとおりです。
完全なモジュールとテスト スクリプトはこちらDBIx::PgCoroAnyEvent
とこちら01_sleeps.t
誰かが見て、何が悪いのか説明してもらえますか?
perl - AnyEvent::STOMP::Client + AnyEvent::ForkManger = 断続的なエラー
ActiveMQ をリッスンし、メッセージに基づいて、Web サービスからデータを取得し、何らかの処理を行ってから、プロセス データを別の Web サービスに配置するプロセスを作成しようとしています。(REST/JSON)
以下のモジュールは、私が話している不安定な Web サービスの 1 つがエラーを返すまで正常に動作します。エラーをキャッチするために多くのことを試みましたが、まだ役に立ちません。次のメッセージが表示されますが、Webサービスエラーが発生すると:
イベント (MESSAGE, AnyEvent::STOMP::Client=HASH(0x3ad5e48), HASH(0x3a6bbb0) {"action":"created","data":{"id":40578737,"type":") で未処理のコールバック例外が発生しましたalert","who":null},"guid":"ADCCEE0C-73A7-11E6-8084-74B346D1CA67","hostname":"myserver","pid":48632}): $fork_manager->start() はマネージャ プロセス内で呼び出される
OK、概念的には、子プロセスが別のプロセスを開始しようとしていて、フォーク マネージャーがそれはノーノーだと言っていることを理解しています。しかし、以下のモジュールを考えると、長時間実行される処理を処理するために新しいプロセスを開始する適切な方法は何ですか? または、子プロセスが停止してこの例外が発生するのはなぜですか?どうすればこれを防ぐことができますか?
これがモジュールです(取り除かれています)
上記のモジュールのドライバーは次のとおりです。
最後に、これを実際に確認するために使用できるトラフィック ジェネレーターを示します。
perl - AnyEvent でデータの読み取りを停止する方法
Perl のAnyEventを使用して、いくつかのプロキシ スクリプトを実行してきました。
私のプログラムは、このセットアップでプロキシ サーバーとして機能します。
AnyEvent ::Handleで、エージェントからのデータの読み取りを停止し、クライアントがデータを取得した後に再開するにはどうすればよいですか?
部品コード:
最近$handle->stop_read
、エージェントon_read
イベントに追加しましたが、機能しません。エージェントは常にデータを取得します。
perl - AnyEvent は特定の時点で接続の試行を停止しました
サーバーに対してテストするスクリプトを作成しました (100K を超える同時 TCP ソケットが可能です)。65536 に達した後、クライアントは接続のセットアップの試行を停止しました。なぜだろう。
記録のために、Ubuntu 14.04 (linux 3.19.0) でルートとして実行し、ulimit -a
100000 を示しています。
理由はありますか?
更新1
コメントに基づいていくつかの更新。みんなありがとう。
- 1 つの IP のみを使用すると、27000 の同時 TCP 接続に簡単に到達できます。ポート範囲 (ホストごと) は、4 つのホストで 100,000 の接続を許可する必要があります。
fs.nr_open = 1048576
net.ipv4.netfilter.ip_conntrack_max の構成はありますが、ありません- 最大数「65536」は多くのことを意味します: 1) ホスト上のポートの最大数 2) 2 バイトの短整数の数値の数。だから関連している可能性があります。どこで制限を再定義できるか、または再定義できるかどうか疑問に思います。
- 番号が 65536 に達すると、新しい接続の作成の試行が停止しました。