任何人都可以帮我找出tomcat中的错误原因。我在其中使用solr。开始工作正常。稍后我会提出这个错误。重新启动后它工作正常。请帮我找出错误。
2011年3月7日上午10:36:47 org.apache.solr.common.SolrException日志 SEVERE:java.lang.RuntimeException:java.lang.OutOfMemoryError:Java 堆空间 org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1068)at at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:418) 在 org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:85) 在 org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:169) 在org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69)at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54) 在 org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) 在org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)at at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338) 在 org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) 在 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.http11.Http11Processor.process(Http11Processor.java:844) 在 org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:634) 在 org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:445) 在java.lang.Thread.run(未知来源)引起: java.lang.OutOfMemoryError:Java堆空间
答案 0 :(得分:17)
尝试增加记忆力
设置环境变量JAVA_OPTS="-Xms256m -Xmx500m"
,这意味着堆起始大小为256 MB,最大512 MB。或者编辑你的catalina.bat或.sh并在那里添加这一行。
你必须使用这些值,几周前我有一个SOLR索引器工作,大约2 GB的数据,需要700 MB堆。
答案 1 :(得分:3)
您可以尝试在dataSource定义中降低默认的batchSize JDBC连接参数 DataImportHandler旨在逐行传输行。它将获取大小值(默认值:500)传递给Statement#setFetchSize,而某些驱动程序则不会这样做。
如果你正在使用MsSQL,你可以添加dataSource param responseBuffering =“adaptive”。
有关详细信息,请参阅此处:
http://wiki.apache.org/solr/DataImportHandlerFaq
答案 2 :(得分:2)
使用-Xmx1024m或更大的值启动tomcat,为tomcat提供更多的堆空间。
答案 3 :(得分:1)
你一定要考虑调整你的JVM。首先,您应该更改JVM参数以发出垃圾收集日志,然后使用工具分析该日志。此分析将帮助您为堆选择合理的值,并且还可以让您判断是否确实存在内存泄漏或只是堆调整问题。有关GC分析工具的一些信息,请参阅此相关问题: