Я начинаю индексировать статьи DB с solr, но после того, как добавляют приблизительно 58 миллионов статей (и приблизительно 113 ГБ размером из диска), я добираюсь ниже сообщения об ошибке на ошибке журнала кота
Note1: я уже установил пул памяти Init на 256 МБ и память Max pool:1400MB к серверу кота.
Note2: Я могу отправить или искать статью, но должен ожидать, более чем 3 минуты для получают ответ.
8-apr-2010 14:27:07 org.apache.solr.common.SolrException log
SEVERE: java.lang.OutOfMemoryError: Java heap space
at org.apache.lucene.util.PriorityQueue.initialize(PriorityQueue.java:89)
at org.apache.lucene.search.HitQueue.<init>(HitQueue.java:67)
at org.apache.lucene.search.TopScoreDocCollector.<init>(TopScoreDocCollector.java:113)
at org.apache.lucene.search.TopScoreDocCollector.<init>(TopScoreDocCollector.java:37)
at org.apache.lucene.search.TopScoreDocCollector$InOrderTopScoreDocCollector.<init>(TopScoreDocCollector.java:42)
at org.apache.lucene.search.TopScoreDocCollector$InOrderTopScoreDocCollector.<init>(TopScoreDocCollector.java:40)
at org.apache.lucene.search.TopScoreDocCollector.create(TopScoreDocCollector.java:100)
at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:979)
at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:884)
at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:341)
at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:182)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:195)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
at java.lang.Thread.run(Unknown Source)
Что такое проблема?
Имеет какое-либо предложение?
Важный Вопрос: Почему solr использование памяти "кучи"???
Обновите до последней версии jdk 6, если вы еще этого не сделали. Я ударил аналогичный OOME на jdk 5, который ушел с 6. Я подозреваю, что это вещь nio.
Попробуйте уменьшить maxPendingDeletes в вашем solrconfig.xml.
Чтобы узнать, какой компонент solr использует всю память, запустите solr следующим образом:
java -XX: + HeapDumpOnOutOfMemoryError -XX: HeapDumpPath = some_directory_of_your_choice -jar start.jar
Затем проанализируйте кучу сделайте дамп с помощью автономного MAT из http://www.eclipse.org/mat/ и опустите соответствующий кеш, который занимает всю вашу память.
Включите ведение журнала сборщика мусора и построите график временных рядов, это может показать вам скорость распределения памяти JVM и сколько собирается, если вообще собирается, чтобы вы могли приблизиться к верхней отметке.