3

我已经完成了 2 次性能测试,以使用 235280 个文档的集合来衡量索引速度:

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

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

我使用 8 个 CPU。

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

Q1:通常,solr 实例的数量会提高还是降低索引速度?

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

Q3:为什么我使用 SolrCloud 时性能会下降?我错过了什么(设置?)?

编辑 :

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

4

2 回答 2

0

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

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

于 2014-03-20T18:15:10.777 回答
0

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

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

我还使用 updateCSV API 来导入文档。

我的基线矩阵是用其中一台机器(1 个分片)测量的。我的 SolrCloud 矩阵是用所有 4 个来测量的(4 个分片,每个集合 1 个副本)。


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

对于中等收集 (7GB),2.17 倍。

对于小型集合 (1.29GB),1.17x。


所以回答你的问题:

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

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

Q3:这真的取决于你如何设置它。我看到只有默认设置的性能提升。但以下是我遇到的更能提升性能的东西:

  • 不要commit=true在您的 updateCSV API 调用中设置。
  • 如果系统利用率低,您可以使用比活动 Solr 节点数量更多的分片。
  • solr.hdfs.blockcache.slab.count应在可用系统内存的 10% 到 20% 之间。
  • autoCommit一般应为15秒。
于 2015-05-05T19:54:32.070 回答