SOS:我的SOLR prod服务器每30分钟崩溃一次



更新:当我的应用程序爬升到>1000个对象[Solr Logs Included]

SysAdmin已经确定了Xen CPU中断的峰值,不知道是什么原因导致的。Xen virq_timer中断在崩溃前大约10分钟出现峰值,这就是我们如何确定崩溃是否即将到来的方式。

一旦xen cpu中断峰值后10分钟的峰值tomcat死亡。

正在运行纯值设置。它是索引博客文章类型的内容。下面是我反复看到的错误:

严重:Java .lang. outofmemoryerror: Java堆空间在org.apache.lucene.search.ExactPhraseScorer。(ExactPhraseScorer.java: 37)org.apache.lucene.search.PhraseQuery PhraseWeight.scorer美元(PhraseQuery.java: 251)org.apache.lucene.search.BooleanQuery BooleanWeight.scorer美元(BooleanQuery.java: 298)org.apache.lucene.search.FilteredQuery.getFilteredScorer (FilteredQuery.java: 149)org.apache.lucene.search.IndexSearcher.search (IndexSearcher.java: 577)org.apache.lucene.search.IndexSearcher.search (IndexSearcher.java: 364)org.apache.solr.search.SolrIndexSearcher.getDocListNC (SolrIndexSearcher.java: 1296)org.apache.solr.search.SolrIndexSearcher.getDocListC (SolrIndexSearcher.java: 1176)org.apache.solr.search.SolrIndexSearcher.search (SolrIndexSearcher.java: 375)org.apache.solr.handler.component.QueryComponent.process (QueryComponent.java: 394)

严重:Java .lang. outofmemoryerror: Java堆空间java.util.Arrays.copyOf (Arrays.java: 2894)java.lang.AbstractStringBuilder.expandCapacity (AbstractStringBuilder.java: 117)java.lang.AbstractStringBuilder.append (AbstractStringBuilder.java: 407)java.lang.StringBuffer.append (StringBuffer.java: 241)java.util.logging.SimpleFormatter.format (SimpleFormatter.java: 88)org.apache.juli.FileHandler.publish (FileHandler.java: 198)java.util.logging.Logger.log (Logger.java: 476)org.slf4j.impl.JDK14LoggerAdapter.log (JDK14LoggerAdapter.java: 588)org.slf4j.impl.JDK14LoggerAdapter.info (JDK14LoggerAdapter.java: 285)

at org.apache.solr.core.SolrCore.execute(SolrCore.java:1386)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:636)

May 16, 2013 1:04:46 AM org.apache.solr.common. solreexception日志Java .lang. outofmemoryerror: Java堆空间错误在org.apache.lucene.search.ExactPhraseScorer。(ExactPhraseScorer.java: 38)org.apache.lucene.search.PhraseQuery PhraseWeight.scorer美元(PhraseQuery.java: 251)org.apache.lucene.search.BooleanQuery BooleanWeight.scorer美元(BooleanQuery.java: 298)org.apache.lucene.search.FilteredQuery.getFilteredScorer (FilteredQuery.java: 149)org.apache.lucene.search.IndexSearcher.search (IndexSearcher.java: 577)org.apache.lucene.search.IndexSearcher.search (IndexSearcher.java: 364)org.apache.solr.search.SolrIndexSearcher.getDocListNC (SolrIndexSearcher.java: 1296)org.apache.solr.search.SolrIndexSearcher.getDocListC (SolrIndexSearcher.java: 1176)org.apache.solr.search.SolrIndexSearcher.search (SolrIndexSearcher.java: 375)

at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:394)

设置:

export JAVA_OPTS="-Xms1024m -Xmx4096m"

也可能是您现在正在向服务器发送不同类型的查询,这些查询需要更多内存来处理。Java不按需分配内存,相反,它在应用程序启动时获取给定的内存,如果内存用完,那么它就会崩溃,并出现OutOfMemoryError。应用程序可能运行良好,直到索引大小增长和查询消耗足够的内存导致问题。

默认的Java堆大小设置(256Mb?)对于运行Solr来说非常低。根据我的经验,1-2Gb是有用的最小值,否则Solr将不断崩溃。您可以从管理界面观察Solr内存使用情况,并相应地调整设置,以匹配特定索引/查询类型的内存需求。

您可以通过在启动时提供Solr -Xmx1024m参数来增加内存分配,或者通过将该设置添加到所有java应用程序的JAVA_OPTS环境变量中。

最新更新