2

最近、Solr3.6からSolr4ベータバージョンに更新しました。同じレコードを何度も更新してコミットしようとすると、以下の例外が発生します。誰かがこれを解決する方法を手伝ってもらえますか?

SEVERE: org.apache.solr.common.SolrException: Error opening new searcher
    at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1267)
    at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1379)
    at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1157)
    at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:560)
    at org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:87)
    at org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:64)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processCommit(DistributedUpdateProcessor.java:959)
    at org.apache.solr.update.processor.LogUpdateProcessor.processCommit(LogUpdateProcessorFactory.java:157)
    at org.apache.solr.handler.RequestHandlerUtils.handleCommit(RequestHandlerUtils.java:69)
    at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1656)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:454)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:275)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219)
    at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:333)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed
    at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:553)
    at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:558)
    at org.apache.lucene.index.IndexWriter.nrtIsCurrent(IndexWriter.java:4061)
    at org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:261)
    at org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:240)
    at org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:230)
    at org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:166)
    at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1213)
    ... 30 more
4

1 に答える 1

2

SolrConfig.xmlのクエリセクションで、MaxWarmingsearchesの数を増やし、useColdSearcherをtrueに設定します。詳細については、こちらをご覧ください。 http://wiki.apache.org/solr/FAQ#What_does_.22exceeded_limit_of_maxWarmingSearchers.3DX.22_mean.3F

<query>
 <useColdSearcher>true</useColdSearcher>
 <maxWarmingSearchers>6</maxWarmingSearchers>
</query>

SolrCloud BootCampに参加し、そこでSolrチームの意見を取り入れてから更新してください。

  • ウォーミングサーチャーの数を増やすと、上記の例外を減らすのに役立ちますが、検索には役立ちません。
  • ファセット、グループ化、関数クエリなどの検索ではMax Warming Searcherが使用されるため、上記の例外が発生した場合は、コミットの数を減らすことをお勧めします。maxWarmingSearchersを増やしても、何の助けにもなりません。

  • 彼らは毎秒1つのコミットを推奨しています。毎秒100回のコミットを実行することを計画していて、リアルタイムの更新を確認したい場合は、maxWarmingSearchersをオフにすることでそれを実行できます。ただし、これをオフにすると、ファセットやグループ化などのクエリに時間がかかります。

于 2012-11-27T16:47:03.720 に答える