SOLR索引性能:处理2.3k Docs / s

Cof*_*ern 5 lucene solr

我正在尝试提高Solr 6.0索引的性能。

最初,我们使用连接7个表的select语句对4500万行进行索引,而索引需要花费7多个小时。这导致在整个索引建立期间打开jdbc连接时,我们都得到了快照太旧的错误。使我们的完整索引失败。

我们能够归档大约1000万行,并从原始的7个联接选择中构建了一个外部表。这样简化了查询Solr所使用的,因此可以从1个表中选择*。

现在正在使用ONE_BIG_ External -TABLE中的Select *为3500万行建立索引,并且在2.3k docs / s + -250的情况下需要大约4-5个小时。由于我们使用的是外部表,因此不应由于UNDO堆栈而使快照太旧。

我们有77列正在建立索引。

因此,我们为最初的问题找到了解决方案,但现在我希望在进行干净填充时提高索引速度。

引用我尝试过的SolrPerformanceFactors

  • 批量大小:
    1. 2000年-无变化
    2. 6000-不变
    3. 4000-不变

例:

 <dataSource jndiName="xxxxxx batchSize="2000" type="JdbcDataSource"/>
Run Code Online (Sandbox Code Playgroud)
  • 自动提交:
    1. 每1小时-不变
  • 合并因子:
    1. 默认值20 vs 10-退出20分钟
  • 索引字段:
    1. 剪掉11个索引字段-什么都没有

编辑:下面每个问题添加一些信息。我每小时都会自动提交,这没有任何帮助。还每秒进行一次软提交。我复制了一个较小的Solr内核,该内核具有这些参数,他们说它们运行良好。

    <autoCommit> 
      <maxTime>3600000</maxTime> 
      <openSearcher>false</openSearcher> 
    </autoCommit>


    <autoSoftCommit> 
      <maxTime>1000</maxTime> 
    </autoSoftCommit>
Run Code Online (Sandbox Code Playgroud)

除了为此扔硬件之外,我还有其他陷阱吗?如果您需要更多信息,请告诉我,我会尽我所能尽力回答问题。