使用和不使用Solrcloud的索引速度性能

时间:2013-08-01 14:47:22

标签: solr solrcloud

我已经完成了两项性能测试来测量索引速度,收集了235280个文档:

第一次测试:1个solr实例没有 SolrCloud:索引速度= 6191 doc / s

第二次测试:4个solr实例(4个分片)链接 SolrCloud:索引速度= 4506 doc / s

我使用8个CPU。

所以,我对这些结果有一些疑问:

Q1:通常,solr实例的数量是否会改善或降低索引速度?

Q2: SolrCloud会降低索引速度吗?

问题3:使用SolrCloud时,为什么会降低性能?我错过了什么(设置?)?

编辑:

我使用CSV更新处理程序来索引我的收藏。

2 个答案:

答案 0 :(得分:0)

根据我执行的性能测试,Solr云基础架构中的多个节点之间的共享提高了我的索引性能。在多个节点中复制分片以处理故障转移确实减慢了索引性能,原因很明显。还要考虑批量索引而不是进行单次更新。

您可以阅读http://wiki.apache.org/lucene-java/ImproveIndexingSpeed了解更多信息。

答案 1 :(得分:0)

Solr中有许多设置以及可能影响索引性能的硬件规格。除了在其上投入更多机器的明显解决方案之外,调整Solr更像是一门艺术而非科学。这是我的经历,所以拿一粒盐。通常,您应该看到每秒6K到8K的索引性能。

硬件规格:4 x 40核心(超线程),带256GB RAM和SSD

我还使用updateCSV API导入文档。

我的基线矩阵用其中一台机器(1个碎片)测量。 我的SolrCloud矩阵用它们全部4个进行测量(4个碎片,每个集合1个副本)。

对于大型收藏(82GB),我看到了3.68倍的吞吐量。

对于中等收藏(7GB),2.17x。

小集合(1.29GB),1.17x。

所以回答你的问题:

Q1:通常,每次收集的Solr节点越多,索引速度就越快。它可能在某些时候处于稳定状态,但肯定索引性能不会降低。也许你的集合太小而无法证明SolrCloud水平扩展开销的合理性?

Q2:不,SolrCloud不应降低索引速度。

问题3:这实际上取决于你如何设置它。我只看到默认设置的性能提升。但是我遇到的事情更能提升性能:

  • 请勿在updateCSV API调用中设置commit=true
  • 如果系统利用率较低,则每个集合可以使用比实时Solr节点数更多的分片。
  • solr.hdfs.blockcache.slab.count应占可用系统内存的10%到20%。
  • autoCommit通常应为15秒。