【发布时间】:2012-03-31 15:40:29
【问题描述】:
Solr 出现内存不足异常。索引大小很小,大约在 30GB 左右。完整索引已完成。稍后在搜索时,也许当它尝试将结果加载到内存中时,它开始给出这个异常。尽管分配给 Tomcat 的内存相同,并且另一台服务器上的 solr 配置副本完全相同,但它工作得非常好。我正在开发 64 位软件,包括 Windows 上的 Java 和 Tomcat。使用较小的索引大小,它工作得非常好。我正在考虑增加分配的 tomcat 堆空间,但是如何在具有完全相同系统和 solr 配置的不同服务器上运行良好? 任何帮助将不胜感激。
这里是日志:
服务器遇到内部错误(solr 配置中的严重错误。检查您的日志文件以获取有关可能错误的更多详细信息。如果您希望 solr 在配置错误后继续,请更改:false in null ----- -------------------------------------------------- ------ java.lang.RuntimeException: java.lang.OutOfMemoryError: Java 堆空间在 org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1068) 在 org.apache.solr.core.SolrCore .(SolrCore.java:579) 在 org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:137) 在 org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:83) 在 org .apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295) 在 org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig. java:115) 在 org.apache.catalina.core.StandardContext.filterStart(StandardCont ext.java:4072) 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:4726) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 在 org.apache.catalina .core.ContainerBase.addChild(ContainerBase.java:779) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943 ) 在 org.apache.catalina.startup.deployWARs(HostConfig.java:778) 在 org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504) 在 org.apache.catalina.startup.HostConfig。在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 在 org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 开始(HostConfig.java:1317) .catalina.core.ContainerBase.start(ContainerBase.java:1065) 在 org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java :1057) t org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 在 org.apache.catalina.core.StandardService.start(StandardService.java:525) 在 org.apache.catalina.core.StandardServer.start (StandardServer.java:754) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:595) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache。 catalina.startup.Bootstrap.main(Bootstrap.java:414) 原因:java.lang.OutOfMemoryError:org.apache.lucene.index.SegmentTermEnum.termInfo(SegmentTermEnum.java:180) 在 org.apache 处的 Java 堆空间。 lucene.index.TermInfosReader.(TermInfosReader.java:91) at org.apache.lucene.index.SegmentReader$CoreReaders.(SegmentReader.java:122) at org.apache.lucene.index.SegmentReader.get(SegmentRea der.java:652) 在 org.apache.lucene.index.SegmentReader.get(SegmentReader.java:613) 在 org.apache.lucene.index.DirectoryReader.(DirectoryReader.java:104) 在 org.apache.lucene。 index.ReadOnlyDirectoryReader.(ReadOnlyDirectoryReader.java:27) at org.apache.lucene.index.DirectoryReader$1.doBody(DirectoryReader.java:74) at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java: 683) 在 org.apache.lucene.index.IndexReader.open(IndexReader.java:476) 在 org.apache.lucene.index.IndexReader .open(IndexReader.java:403) 在 org.apache.solr.core.StandardIndexReaderFactory.newReader(StandardIndexReaderFactory.java:38) 在 org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1057) 在 org. apache.solr.core.SolrCore.(SolrCore.java:579) 在 org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:137) 在 org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter .java:83) 在 org.apache.cat alina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115 )在 org.apache.catalina.core.ContainerBase 的 org.apache.catalina.core.StandardContext.start(StandardContext.java:4726) 的 org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)。 addChildInternal(ContainerBase.java:799) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) at org.apache .catalina.startup.HostConfig.deployWAR(HostConfig.java:943) 在 org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778) 在 org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java :504) 在 org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) 在 org.apache.catalina.startup.HostConfig.lifecycleEv ent(HostConfig.java:324) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) )阻止了它完成此请求。
【问题讨论】: