我開始使用Solr索引數據庫的文章,但增加了約5800萬條(和磁盤的約113 GB的大小)後,我得到以下錯誤消息在Tomcat日誌錯誤的OutOfMemoryError:Java堆空間錯誤時啓動Solr的
注1:我已經將Init內存池設置爲256MB,並且最大內存池:1400MB到tomcat服務器。
注2:我可以發佈或搜索文章,但必須等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)
什麼問題?
有什麼建議嗎?
重要提示:爲什麼要使用堆內存?
您是否嘗試附加jconsole以獲得更好的外觀發生了什麼? – 2010-04-08 13:21:38
內存佔用率是否增加?你在內存中存儲索引的一部分?如果答案是否定的,我想這是內存泄漏。嘗試使用:jmap -histo來查看哪種對象佔用堆的大部分比預期的要多。 –
2010-04-08 13:35:56
感謝您的回覆。我不知道很多關於java的知識,我也能找到jmap。只在服務器上安裝YourKit java profiler。如何找到有什麼問題? – Hamid 2010-04-08 14:19:29