如何修复maxWarmingSearchers的超出限制?

时间:2011-09-22 09:59:25

标签: solr

任何人都知道为什么以及如何解决这个问题,因为我在同一时间进行了非常繁忙的更新和搜索。

  

打开新搜索器时出错。

     

maxWarmingSearchers = 2的超出限制,稍后再试

3 个答案:

答案 0 :(得分:17)

根据Solr FAQ: What does "exceeded limit of maxWarmingSearchers=X" mean?

  

如果你经常遇到这个错误,你可以(在理论上)增加   您的maxWarmingSearchers中的号码,但除非您这样做,否则这样做很危险   有信心你有系统资源(RAM,CPU等)   它安全。处理这种情况的更正确的方法是减少   你发送提交的频率。

这个错误的含义是你基本上经常提交提交,内部缓存无法跟上你说“清除缓存并让我用新数据搜索”的频率。您需要降低提交的频率。您可以在Near Realtime Search Tuning中找到有关此问题的更多信息,但基本思路是您使用的方面越多,提交之间所需的间隔就越大。

我解决这个问题的一种方法是停止进行手动提交(即让我的应用程序将数据提交给solr然后执行提交请求)并打开solr autocommit

以下是一个例子:

<!-- solrconfig.xml -->
<autoCommit>
  <maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered -->
  <maxTime>15000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered -->
  <openSearcher>false</openSearcher> <!-- SOLR 4.0.  Optionally don't open a searcher on hard commit.  This is useful to minimize the size of transaction logs that keep track of uncommitted updates. -->
</autoCommit>

你必须弄清楚你需要多大的间隔时间(即maxTime),但实际上每次我向我的应用程序添加更多分面搜索(或更多索引或你有什么)我必须增加间隔。

如果您需要更多实时搜索而不是这些提交的频率,则可以查看Solr soft commits

答案 1 :(得分:16)

正如你已经很好地解释here,你应该减少你提交的次数,或者在solrconfig.xml中更改maxWarmingSearchers的值(这不是一个好习惯)

答案 2 :(得分:0)

根据https://wiki.apache.org/solr/CommitWithin

  

Solr中有多种提交策略。最知名的是客户端的显式commits。然后你在solrconfig.xml中配置了AutoCommit,它允许Solr在一定时间或数量的文档之后自动提交adds,最后在输入缓冲区满时可能会有幕后提交。 / p>

您可以使用&#39; CommitWithin&#39;处理这个问题。
Solr3.5及更高版本,它可以是server.add(mySolrInputDocument, 10000);
在早期版本中,您可以使用以下代码
UpdateRequest req = new UpdateRequest(); req.add(mySolrInputDocument); req.setCommitWithin(10000); req.process(server);
它可以减少您经常发送的提交。