我有一个嵌入式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]()
我需要存储的字段用于对象映射。我不明白为什么在加载单个文档时需要进行如此多的解压缩。这就像解压缩查找表是巨大的。任何提示/建议?
答案 0 :(得分:1)
我禁用了Suggester组件和拼写检查程序,现在它更快。