首页 > 解决方案 > Solr Suggest Component 和 OutOfMemory 错误

问题描述

我在 Solr 5.5 中使用带有大量地址数据的 Solr Suggester 组件。我的机器为 solr 分配了 20GB RAM,机器总共有 32GB RAM。

我有一个通讯簿核心,其中包含以下重要信息 -

"numDocs"=153242074
"segmentCount"=34
"size"=30.29 GB

我的 solrconfig.xml 看起来像这样 -

<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
  <str name="name">mySuggester1</str>
  <str name="lookupImpl">FuzzyLookupFactory</str>
  <str name="storeDir">suggester_fuzzy_dir</str>

  <!-- Substitute these for the two above for another "flavor"
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
    <str name=?indexPath?>suggester_infix_dir</str>
  -->

  <str name="dictionaryImpl">DocumentDictionaryFactory</str>
  <str name="field">site_address</str>
  <str name="suggestAnalyzerFieldType">suggestType</str>
  <str name="payloadField">property_metadata</str>
  <str name="buildOnStartup">false</str>
  <str name="buildOnCommit">false</str>
</lst>
<lst name="suggester">
  <str name="name">mySuggester2</str>
  <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
  <str name="indexPath">suggester_infix_dir</str>

  <str name="dictionaryImpl">DocumentDictionaryFactory</str>
  <str name="field">site_address_other</str>
  <str name="suggestAnalyzerFieldType">suggestType</str>
  <str name="payloadField">property_metadata</str>
  <str name="buildOnStartup">false</str>
  <str name="buildOnCommit">false</str>
</lst>
</searchComponent>

处理程序的定义如下 -

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" >
<lst name="defaults">
  <str name="suggest">true</str>
  <str name="suggest.count">10</str>
  <str name="suggest.dictionary">mySuggester1</str>
  <str name="suggest.dictionary">mySuggester2</str>
  <str name="suggest.collate">false</str>
  <str name="echoParams">explicit</str>
</lst>
<arr name="components">
  <str>suggest</str>
</arr>
</requestHandler>

问题陈述

每次我尝试使用Suggest.build=true url 参数构建建议索引时,都会出现OutOfMemory 错误。我不知道如何使用当前设置进行这项工作。谁能解释为什么会这样?我该如何解决这个问题?

标签: solrsolrcloudsolr5

解决方案


在邮件列表中,关键信息是 OOME 是由于 java 堆空间造成的。

这意味着您需要增加堆大小或减少 Solr 所需的堆数量。减少堆需求并不总是可能的,但这里有一些想法:

https://wiki.apache.org/solr/SolrPerformanceProblems#Reducing_heap_requirements


推荐阅读