zacznę indeksowania DB artykuły z Solr, ale po dodać około 58 milionów artykuł (i około 113 GB rozmiaru dysku), otrzymuję poniżej komunikat o błędzie w przypadku błędu kocur dziennikaOutOfMemoryError: błąd przestrzeń sterty Java kiedy zacząć solr
Uwaga 1: już ustawiłem pula pamięci Init na 256 MB, a Max pamięć: 1400 MB na serwer tomcat.
Uwaga 2: Mogę publikować lub wyszukiwać artykuł, ale muszę poczekać ponad 3 minuty, aby uzyskać odpowiedź.
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)
Na czym polega problem?
Masz jakieś sugestie?
Ważne pytanie: Dlaczego solr korzysta z pamięci sterty?
Czy próbowałeś dołączyć jconsole, aby lepiej zrozumieć, co się dzieje? –
Czy można zwiększyć rozmiar pamięci? czy przechowujesz jakąś część indeksu w pamięci? Jeśli odpowiedź brzmi nie, przypuszczam, że jest to przeciek pamięci. Spróbuj użyć: jmap -histo, aby zobaczyć, jakie obiekty zajmują większą część sterty niż oczekiwano. –
dzięki za odpowiedź. nie wiem wiele o java, również nie mogę znaleźć jmap. instaluj tylko profiler YourKit java na serwerze. jak znaleźć problem? – Hamid