我有一个ruby 1.9 rails 3.0.7应用程序,它使用lucid / solr索引大量文本数据(3GB左右)。数据存储在MongoDB数据库中,主要包含电子邮件。
我遇到的一个问题是,当我建立应用程序时,我正在尝试索引整个数据,以便我可以搜索它。这个过程实际上会经常重复,因此我必须弄清楚如何快速有效地将整个MongoDB数据库索引到solr中。根据solr文档,加快索引过程的主要方法之一是使用多个核心。我在一个单核VM上运行了索引,我花了大约1个小时来索引我的数据。当我将它移动到4核VM并运行它时,它也花了大约1个小时。我没注意到2之间有任何明显的区别。
这让我怀疑ruby 1.9可能无法正确使用多个核心?我正在使用Linux Ubuntu 10.10 VM。
我读过一些帖子,提到ruby 1.9是一个不同于1.8的多核功能,但我承认这不是我非常了解的领域。
有没有人知道ruby 1.9是否确实能够利用多个内核来索引solr中的大量数据?
答案 0 :(得分:1)
根据this question和this,它可以在所有核心上运行,只要该线程释放出名为Giant VM Lock的东西。
由于这可能取决于您正在使用的gem(以及C扩展),我建议您进行一些测试以检查它是否实际使用了所有内核,并且在它没有这样做的情况下,也许转移到JRuby,它应该使用所有核心OOB。
我知道这不是一个明确的答案,但我希望它可以帮助您找到解决方案。