solr – java堆空间内存不足

任何人都可以帮我找出tomcat中的错误原因。 我正在使用solr。 开始工作正常。 稍后我会提出这个错误。 重新启动后它工作正常。 请帮我找出错误。

2011年3月7日上午10:36:47 org.apache.solr.common.SolrException log SEVERE:java.lang.RuntimeException:java.lang.OutOfMemoryError:org.apache.solr.core.SolrCore.getSearcher中的Java堆空间( SolrCore.java:1068)org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:418)atg.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:85)atg.apache位于org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java)的org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69)中的.solr.handler.XMLLoader.processUpdate(XMLLoader.java:169) :54)org.apache.solr.handle.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)位于org.apache.solr.servlet的org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)。 SolrDispatchFilter.execute(SolrDispatchFilter.java:338)位于org.apache.catalina.core.ApplicationFilterCha的org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)中的or.internalDoFilter(ApplicationFilterChain.java:235)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)at org .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve) .java:105)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)org.apache.coyote。 http://www.Http11Processor.process(Http11Processor.java:844)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:634)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run( JIoEndpoint.java:445)at java.lang.Thread.run(Unknown Source)引起:java.lang.OutOfMemoryError:Java堆空间

尽量增加你的记忆力

设置环境变量JAVA_OPTS="-Xms256m -Xmx500m" ,这意味着堆起始大小为256 MB,最大512 MB。 或者编辑你的catalina.bat或.sh并在那里添加这一行。

您必须使用这些值,几周前我有一个SOLR索引器工作,大约2 GB的数据,需要700 MB的堆。

您可以尝试在dataSource定义中降低默认的batchSize JDBC连接参数。
DataImportHandler旨在逐行流式传输。 它将获取大小值(默认值:500)传递给Statement#setFetchSize,而某些驱动程序则不遵守这些值。

如果你正在使用MsSQL,你可以添加dataSource param responseBuffering =“adaptive”。

有关详情,请参阅此处:
http://wiki.apache.org/solr/DataImportHandlerFaq

使用-Xmx1024m或更大的值启动tomcat以给tomcat更多的堆空间。

你一定要考虑调整你的JVM。 首先,您应该更改JVM参数以发出垃圾收集日志,然后使用工具分析该日志。 此分析将帮助您为堆选择合理的值,并且还可以让您判断是否确实存在内存泄漏或只是堆调整问题。 有关GC分析工具的一些信息,请参阅此相关问题:

分析Sun Hotspots,JVM 6的GC日志