SimpleDBとTokyoTyrantの組み合わせをストレージに使用するMerbアプリケーションをコーディングしています。これらのデータストアの両方で、リスト内の値ごとにスレッドを起動し、結果セットをマージすることで、IN(リスト)型機能を実装しています。これはWebアプリケーションであることを念頭に置いて、作成するスレッドの数に制限はありますか?Ruby 1.8.7なので、カーネルスレッドではありません。
3 に答える
1
私にはあなたの問題はIOバウンドに聞こえるので、シングルコアのマルチスレッドが役立つかもしれません。
ほとんどの場合、Ruby のメイン ループでは、別のマルチスレッド プロセスで実行されている tokyo tyrant とシンプルな DB を待機することになるでしょう。
では、スレッド数は?知るか?ベンチマークと測定を行う必要があります。
于 2009-12-14T21:54:58.113 に答える
1
スレッドは、ここでやろうとしていることの悪いアプローチのように思えます。JRuby を使用できない場合は、スレッドを完全に削除します。ただし、データベースをロードする ruby ファイルを作成し、ベンチマーク ライブラリを使用して、どの数値が最速かについてベンチマークを行うことができます。おそらく、使用されているメモリも確認する必要があります。
于 2009-12-14T16:46:56.200 に答える
0
MRI を使用している場合、そのような場合にスレッドを使用しても大きな助けにはなりません。MRI は計算操作に関しては役に立たないグリーン スレッドを使用するからです。その場合、JRuby(ネイティブスレッド)を使用すると役立つと思います。ネイティブ スレッドの場合、利用可能なコアを利用するには (コア数 + 1) を使用するのが最善であるとよく耳にします。
于 2009-12-14T16:37:21.397 に答える