使用Solr4的OutOfMemory

Fra*_*eth 5 lucene solr

我正在索引我的内容,并在将我的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
Run Code Online (Sandbox Code Playgroud)

是否有一些已知的错误或我可以测试的东西摆脱它?

在此升级中,有两件事发生了变

  • solr版本(从)3.44.0;
  • Lucene的匹配版本(从LUCENE_34LUCENE_40).

fem*_*gon 6

访问日志时,一目了然,似乎内存不足.当然,这可能不是特别有意义,因为"内存不足"错误,但值得一试,尤其是在看到有关SOLR 4.0日志记录的投诉之后.特别是如果在某种形式的索引重建或更新的重载期间发生这种情况.

所以尝试禁用更新日志,我相信可以通过注释来完成:

<updateLog> 
  <str name="dir">${solr.data.dir:}</str> 
</updateLog> 
Run Code Online (Sandbox Code Playgroud)

在solrconfig.xml中.


编辑:

另一个(可能更好)的方法,再看一眼,可能是更经常地承诺.更新日志的增长似乎与等待提交的大量排队更新直接相关.

如果您没有启用自动提交,您可能想尝试在配置中添加它,例如:

 <autoCommit> 
   <maxTime>15000</maxTime> 
   <openSearcher>false</openSearcher> 
 </autoCommit> 
Run Code Online (Sandbox Code Playgroud)

这个帖子上可以找到很多相关的讨论和建议.