我已经完成了两项性能测试来测量索引速度,收集了235280个文档:
第一次测试:1个solr实例没有 SolrCloud:索引速度= 6191 doc / s
第二次测试:4个solr实例(4个分片)链接与 SolrCloud:索引速度= 4506 doc / s
我使用8个CPU。
所以,我对这些结果有一些疑问:
Q1:通常,solr实例的数量是否会改善或降低索引速度?
Q2: SolrCloud会降低索引速度吗?
问题3:使用SolrCloud时,为什么会降低性能?我错过了什么(设置?)?
编辑:
我使用CSV更新处理程序来索引我的收藏。
答案 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:这实际上取决于你如何设置它。我只看到默认设置的性能提升。但是我遇到的事情更能提升性能:
commit=true
。solr.hdfs.blockcache.slab.count
应占可用系统内存的10%到20%。autoCommit
通常应为15秒。