2009-12-14 114 views
3

我正在編寫Merb應用程序,它使用SimpleDB和Tokyo Tyrant的組合來存儲。對於這兩個數據存儲區,我正在實施IN(列表)類型功能,爲列表中的每個值旋轉一個線程,然後合併結果集。考慮到這是一個Web應用程序,我應該創建的線程數是否有限制? Ruby 1.8.7,所以它們不是內核線程。有多少Ruby線程太多?

+0

對不起,澄清一下,這些線程只是對SimpleDB或Tokyo Tyrant服務器進行服務調用,而不是自己進行非常多的處理。我的印象是MRI線程可以嗎? – 2009-12-14 17:32:15

+0

正確,基準是。 – 2009-12-15 08:35:48

回答

1

線程對於你在這裏嘗試做的事情來說似乎是一個糟糕的方法,如果你不能使用JRuby,那麼我會完全放棄這些線程。但是,您可以創建一個加載數據庫的ruby文件,並使用benchmark library來進行一些基準測試,其中哪個數字最快。你可能也想看看使用的內存。

+0

那個基準庫看起來很有用,我之前並不知道它:謝謝。 – 2009-12-14 17:33:24

0

如果您正在使用MRI,那麼在這種情況下使用線程將不會有什麼大的幫助,因爲MRI使用的綠色線程在計算操作中無用。我相信使用JRuby(本地線程)將會有所幫助。 我一直聽說,對於本地線程,最好使用(內核數量+ 1)來利用可用的內核。

+0

MRI Ruby 1.8使用綠色線程,但1.9不使用綠色線程 - 它僅使用GIL。 – 2011-10-24 06:55:49

1

對我來說,你的問題聽起來像IO一樣,所以多線程單核可能會有所幫助。

大多數情況下,在您的主要Ruby循環中,您可能會等待東京暴君和簡單的DB在獨立的多線程進程中運行。

那麼有多少個線程?誰知道?你將不得不基準和測量