Frage

Ich bin Codierung eine Merb Anwendung, die eine Kombination von SimpleDB und Tokyo Tyrant für die Lagerung verwendet. Für diese beiden Datenspeicher ich Umsetzung IN (Liste) Typ-Funktionalität durch einen Thread für jeden Wert in der Spinnerei bis Liste und dann die Ergebnissätze verschmelzen. Bedenkt man, dass dies eine Web-Anwendung, gibt es eine Begrenzung für die Anzahl der Threads, soll ich zu schaffen werden? 1.8.7 Rubin, so dass sie nicht Kernel-Threads.

War es hilfreich?

Lösung

Themen scheint wie ein schlechter Ansatz für das, was Sie versuchen, hier zu tun, und wenn Sie nicht JRuby verwenden können, würde ich fallen nur die insgesamt Threads. Sie können jedoch eine rubin Datei laden die Datenbank erstellen und verwenden Sie die Benchmark-Bibliothek einige Benchmarking zu tun, auf die Anzahl der schnellste ist. Sie wollen wahrscheinlich bei der Erinnerung zu verwendet suchen.

Andere Tipps

Für mich Ihr Problem klingt IO gebunden, so Multi-Threading ein einzelner Kern helfen kann.

Die meiste Zeit in Ihrer Haupt-Ruby-Schleife werden Sie wahrscheinlich auf tokyo Tyrannen und einfache DB warten, die in separatem Multi-Threaded-Prozess ausgeführt werden.

So, wie viele Threads? Wer weiß? Sie werden auf Benchmark und messen haben .

Wenn Sie mit MRI dann Threads in solchen Fällen unter Verwendung von nicht von einer großen Hilfe sein als MRI-grüne Fäden verwendet, die nicht hilfreich sind, wenn es um Rechenoperationen kommen. Ich glaube, mit JRuby (native Threads) dann hilfreich sein wird. Ich höre immer wieder, dass für native Threads ist es am besten zu nutzen (Anzahl der Kerne + 1) zur Verwendung der zur Verfügung stehenden Kerne zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top