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

时间:2013-05-17 23:05:44

标签: tomcat solr

更新:见Sunspot-Solr slowing down to a beast once my Application climbed to > 1000 objects [ Solr Logs Included ]

SysAdmin已经确定了Xen CPU中断的峰值,不知道是什么原因引起的。 Xen virq_timer在崩溃前大约10分钟中断了尖峰,这就是我们如何确定崩溃即将来临。

一旦xen cpu在spcat死亡后10分钟内中断峰值,就会立即死掉。

运行普通值设置。它是索引博客类型的内容。这是我反复看到的错误:

SEVERE:java.lang.OutOfMemoryError:Java堆空间     在org.apache.lucene.search.ExactPhraseScorer。(ExactPhraseScorer.java:37)     在org.apache.lucene.search.PhraseQuery $ PhraseWeight.scorer(PhraseQuery.java:251)     at 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)     at 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)

SEVERE:java.lang.OutOfMemoryError:Java堆空间     at java.util.Arrays.copyOf(Arrays.java:2894)     at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:117)     at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:407)     at 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)     at 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)<< h2>
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)

2013年5月16日上午1:04:46 org.apache.solr.common.SolrException日志 SEVERE:java.lang.OutOfMemoryError:Java堆空间     在org.apache.lucene.search.ExactPhraseScorer。(ExactPhraseScorer.java:38)     在org.apache.lucene.search.PhraseQuery $ PhraseWeight.scorer(PhraseQuery.java:251)     at 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)     at 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"

1 个答案:

答案 0 :(得分:0)

也可能是您现在向服务器发送不同类型的查询,需要更多内存来处理。 Java不按需分配内存,而是在应用程序启动时获取为它提供的内容,如果它耗尽,那么它只会与OutOfMemoryError崩溃。应用程序可能正常运行,直到索引大小增长并且查询消耗足够的内存来导致问题。

默认的Java堆大小设置(256Mb?)非常低,无法运行Solr。根据我的经验,1-2Gb是有用的最小值,或者Solr会经常使用。您可以从管理界面观察Solr内存使用情况,并相应地调整您的设置以匹配特定索引/查询类型的内存要求。

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