2017-10-23 1 views
0

백엔드의 Lucene 세그먼트가 병합되지 않고 세그먼트 수가 증가합니다. LogByteSizeMergePolicy에서 으로 변경했습니다.세그먼트가 병합되지 않습니다.

solr 설명서에 따라 속성을 변경하려고했지만 내 세그먼트도 높습니다.

저는 solr 6.1.X를 사용하고 있습니다. 인덱스 데이터는 HDFS에 저장됩니다. solrconfig.xml의

내 인덱스 설정 :

<indexConfig> 
    <writeLockTimeout>1000</writeLockTimeout> 
    <commitLockTimeout>10000</commitLockTimeout> 
    <maxIndexingThreads>15</maxIndexingThreads> 
    <useCompoundFile>false</useCompoundFile> 
    <ramBufferSizeMB>1024</ramBufferSizeMB> 
    <mergePolicy class="org.apache.lucene.index.TieredMergePolicy"> 
      <int name="maxMergeAtOnce">10</int> 
      <int name="segmentsPerTier">1</int> 
    </mergePolicy> 
    <mergePolicyFactory class="org.apache.solr.index.TieredMergePolicyFactory"> 
      <int name="maxMergeAtOnce">10</int> 
      <int name="segmentsPerTier">10</int> 
    </mergePolicyFactory> 
    <lockType>hdfs</lockType> 
    <deletionPolicy class="solr.SolrDeletionPolicy"> 
     <str name="maxCommitsToKeep">1</str> 
     <str name="maxOptimizedCommitsToKeep">0</str> 
    </deletionPolicy> 
</indexConfig> 

The only way we optimize is by force merging which is IO costly and also takes hours to complete. 

내가 2 등 세 개의 파편의 클러스터 및 복제 요인이

내가 잘못

하겠어 어디 사람이 좀 도와 줄래
+0

질문에 정보 스트림 출력을 제공하시기 바랍니다 더 자세한 답변을 얻을하기 위해 – Ivan

답변

0

이론

병합 정책이 두포에서 어떻게 작동하는지 이해하기 위해 u는 읽을 수 있습니다 following post

병합 정책은 세그먼트 수에 영향을주지 않습니다. 단지 병합 할 세그먼트를 결정합니다. 따라서 중요한 질문은 몇 개의 세그먼트가 있습니까? 문제가 무엇입니까?

또 다른 중요한 요소는 인덱싱 스레드 수입니다. 각 스레드는 자체 스레드 로컬 세그먼트를 만듭니다. 즉, 15 개의 스레드가 디스크에 15 개의 세그먼트를 생성합니다.

강제 병합 API를 사용하십시오.이 호출은 IO가 전혀 조절되지 않습니다. 따라서 노드에서 모든 I/O를 소비 할 수 있으므로 검색을 위해 아무 것도 남기지 않고 잠재적으로 시스템이 응답하지 않을 수 있습니다.

연습

당신은 SOLR 로그에이 같은 생산되는 당신의 solrconfig.xml<infoStream>true</infoStream>을 활성화 할 수 있습니다

:

    : 모든 결정은 각 구성 요소에 대한 정보를 설명과 함께 기록됩니다

    IW: commit: done writing segments file "segments_2" 
        IFD: now checkpoint "_cx(6.6.1):c721" [1 segments ; isCommit = true] 
        IFD: deleteCommits: now decRef commit "segments_1" 
        IFD: delete StoreDirectory.deleteFile: delete file segments_1 
        TMP: findMerges: 1 segments 
        TMP: seg=_cx(6.6.1):c721 size=0.054 MB [floored] 
        TMP: allowedSegmentCount=1 vs count=1 (eligible count=1) tooBigCount=0 
        MS: now merge 
        MS: no more merges pending; now return 
    

  • IW - 색인 작성자
  • IFD - 삭제 정책
  • TMP - 계층 병합 정책
  • MS를 - 병합 스케줄러
관련 문제