1

そのため、torquebox.yml という config の下にファイル (私のレール アプリ内) を作成することで、TorqueBox で展開記述子を使用しようとしています。

ファイル自体には次のものが含まれます。

---
application:
  root: /usr/local/labs/live_management
  env: development

tasks:
  Backgroundable:
      concurrency: 9

私が知る限り、これは正しいです。

ただし、このファイルが何をするのかわかりません... rake Torquebox:deploy を実行すると、デフォルトの app_name-knob.yml ファイルがトルクボックス ディレクトリに書き込まれるように見えますが、これには同時実行記述子がありません。その中にあり、ドキュメントには外部ファイルが優先されると書かれています。

その下では、一度に 1 つのバックグラウンド タスクしか実行できないようです。

そこで、torquebox.yml ファイルを Torquebox アプリケーション ディレクトリにコピーして、名前を app_name-knob.yml ファイルに変更してみました。

一度に 2 つのバックグラウンド タスクがあるため (9 を指定したにもかかわらず)、これが役立つようです。

私は何を間違っていますか?私のファイルは間違っていますか?Torquebox には 2 つのバックグラウンド タスクしかありませんか?

内部記述子として Torquebox.yml を使用する正しい方法は何ですか?

4

1 に答える 1

2

あなたはほとんどそこにいます。この問題は、TorqueBox が Ruby インタープリターのランタイム プールを設定する方法が原因です。内部記述子で指定した開発環境では、デフォルトのメッセージング ランタイム プールの最大数は 2 であるため、同時実行の設定に関係なく、バックグラウンドで表示される同時タスクの最大数は 2 です。

本番環境では、デフォルトのプールはsharedです。つまり、多くのスレッドがそれを使用しようとしますが、同じランタイムが共有されます。この場合、最大 9 です。したがって、env 変数をproductionに設定するか、pools 要素を追加します。記述子を強制的に共有してください。例えば、

---
application:
  root: /usr/local/labs/live_management
  env: development

tasks:
  Backgroundable:
      concurrency: 9

pooling:
  messaging: shared

ところで、外部ディスクリプタと内部ディスクリプタの値はマージされ、外部ディスクリプタが 2 つの共通キーに対して優先されます。だからあなたはそれを正しくやっていました。

詳細については、http://torquebox.org/documentation/1.0.1/pooling.htmlをご覧ください。

于 2011-07-13T18:33:09.283 に答える