我正在索引我拥有的内容,在将我的Solr实例升级到solr 4之后,我将面临一些OutOfMemories。引发的例外情况是:
INFO org.apache.solr.update.UpdateHandler - start commit{flags=0,_version_=0,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false}
ERROR o.a.solr.servlet.SolrDispatchFilter - null:java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space
at org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:469)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:297)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.OutOfMemoryError: Java heap space有没有什么已知的bug或者什么我可以测试的东西来摆脱它?
在这次升级过程中,有两件事发生了改变:
3.4到4.0);LUCENE_34到LUCENE_40)。发布于 2012-12-05 09:50:12
在访问日志时,似乎内存不足,一目了然。当然,这可能不是特别有意义的,因为出现了“内存不足”错误,但值得一试,特别是在看到有关Solr4.0日志记录的本诉状之后。特别是如果在某种形式的索引重建过程中发生这种情况,或者在大量更新时发生这种情况。
因此,尝试禁用更新日志,我认为可以通过注释来实现:
<updateLog>
<str name="dir">${solr.data.dir:}</str>
</updateLog> 在solrconfig.xml中。
编辑:
另一种(可能更好)的方法,再看一看,可能是更频繁地提交。更新日志的增长似乎与大量排队更新等待提交直接相关。
如果尚未启用自动提交,则可能需要尝试将其添加到配置中,如下所示:
<autoCommit>
<maxTime>15000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit> 在这条线上有很多相关的讨论和推荐。
发布于 2013-03-25 21:41:13
今天我遇到了同样的问题,在阅读@femtoRgon的建议线程之后,我在solrconfig.xml中更改了下面的内容
<autoCommit>
<maxTime>15000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>至
<autoCommit>
<maxDocs>15000</maxDocs>
<openSearcher>false</openSearcher>
</autoCommit>它不再给我那个错误了。所以它每15000个文档提交一次。在我的例子中,这是足够频繁的,不会遇到内存问题。在我的MacBook Pro中,对包含产品信息(如此简短的文档)的4M文档进行索引需要几分钟。
https://stackoverflow.com/questions/13719786
复制相似问题