0

現在、solrcloud を使用していますが、インデックス作成プロセスがハングする可能性がある問題に直面しています。

私の展開は、5 台のマシンで実行されている 5 つのシャードを持つ 1 つのコレクションのみです。毎日、50m のドキュメントを持つ dataimporthandler を使用して完全なインデックスを作成します。そして、solrcloud の分散インデックス作成を使用して、5 台のマシンのうちの 1 台でインデックス作成をトリガーします。

私は、時々 5 台のマシンのうちの 1 台が死亡することを発見しました。

2013-01-08 10:43:35,879 ERROR core.SolrCore - java.io.FileNotFoundException: /home/admin/index/core_p_shard2/index/_31xu.fnm (No such file or directory)
        at java.io.RandomAccessFile.open(Native Method)
        at java.io.RandomAccessFile.<init>(RandomAccessFile.java:216)
        at org.apache.lucene.store.MMapDirectory.openInput(MMapDirectory.java:222)
        at org.apache.lucene.store.NRTCachingDirectory.openInput(NRTCachingDirectory.java:232)
        at org.apache.lucene.codecs.lucene40.Lucene40FieldInfosReader.read(Lucene40FieldInfosReader.java:52)
        at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:101)
        at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:57)
        at org.apache.lucene.index.ReadersAndLiveDocs.getReader(ReadersAndLiveDocs.java:120)
        at org.apache.lucene.index.BufferedDeletesStream.applyDeletes(BufferedDeletesStream.java:267)
        at org.apache.lucene.index.IndexWriter.applyAllDeletes(IndexWriter.java:3010)
        at org.apache.lucene.index.DocumentsWriter.applyAllDeletes(DocumentsWriter.java:180)
        at org.apache.lucene.index.DocumentsWriter.postUpdate(DocumentsWriter.java:310)
        at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:386)
        at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1445)
        at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:210)
        at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:61)
        at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
        at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:448)
        at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:325)
        at org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:230)
        at org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:157)
        at org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92)
        at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1699)

そして、実際には_31xu.fnmが含まれていないインデックスディレクトリを確認しました。インデックス作成の分散に同時発生のバグがあるのではないかと思っています。

私が知る限り、分散インデックス作成はこのような作業です。ドキュメントは任意のシャードに送信でき、ドキュメントはハッシュ ID に従ってシャードを修正するように指示します。dataimporthandler は、updatehandler を使用してドキュメントを正しいシャードに転送します。最後に、ドキュメントは DocumentsWriterPerThread を介してディスクにフラッシュされます。シャードから送信された更新リクエストが多すぎてインデックス作成がトリガーされて問題が発生したのではないかと思っています。私の推測は、死んだマシンで見つけたものに基づいています。多くのインデックス セグメントがあり、それぞれが非常に小さいです。

私はsolrにあまり詳しくありません。私の推測はまったく意味がないかもしれません。誰か何か考えがありますか? ありがとう

4

0 に答える 0