Slow Solr启动解压缩存储的字段

时间:2014-07-07 19:02:50

标签: solr lucene solr4 spring-data-solr

我有一个嵌入式solr服务器,我与Spring Data Solr结合使用。我有大约600k文件占用3GB。在启动期间,Solr需要几分钟才能执行第一个查询。使用VisualVM,我已经能够找到瓶颈似乎正在加载LZ4解压缩需要很长时间从磁盘读取的第一个文档。跟踪看起来像这样:

searcherExecutor-5-thread-1
    java.lang.Thread.run()
     java.util.concurrent.ThreadPoolExecutor$Worker.run()
      java.util.concurrent.ThreadPoolExecutor.runWorker()
       java.util.concurrent.FutureTask.run()
        java.util.concurrent.FutureTask$Sync.innerRun()
         org.apache.solr.core.SolrCore$5.call()
          org.apache.solr.handler.component.SuggestComponent$SuggesterListener.newSearcher()
           org.apache.solr.spelling.suggest.SolrSuggester.reload()
            org.apache.solr.spelling.suggest.SolrSuggester.build()
             org.apache.lucene.search.suggest.Lookup.build()
              org.apache.lucene.search.suggest.analyzing.AnalyzingSuggester.build()
               org.apache.lucene.search.suggest.DocumentDictionary$DocumentInputIterator.next()
                org.apache.lucene.index.IndexReader.document()
                 org.apache.lucene.index.BaseCompositeReader.document()
                  org.apache.lucene.index.SegmentReader.document()
                   org.apache.lucene.codecs.compressing.CompressingStoredFieldsReader.visitDocument()
                    org.apache.lucene.codecs.compressing.CompressionMode$4.decompress()
                     org.apache.lucene.codecs.compressing.LZ4.decompress()
                      org.apache.lucene.store.BufferedIndexInput.readBytes()
                       org.apache.lucene.store.BufferedIndexInput.readBytes()
                        org.apache.lucene.store.BufferedIndexInput.refill()
                         org.apache.lucene.store.SimpleFSDirectory$SimpleFSIndexInput.readInternal()
                          java.io.RandomAccessFile.seek[native]()

我需要存储的字段用于对象映射。我不明白为什么在加载单个文档时需要进行如此多的解压缩。这就像解压缩查找表是巨大的。任何提示/建议?

enter image description here

1 个答案:

答案 0 :(得分:1)

我禁用了Suggester组件和拼写检查程序,现在它更快。