2009-12-14 79 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在独立的多线程进程中运行。

那么有多少个线程?谁知道?你将不得不基准和测量