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

Tomcat SOS:我的SOLR prod服务器每30分钟就会崩溃一次,tomcat,solr,Tomcat,Solr,更新:见 系统管理员发现Xen CPU中断出现峰值,不知道是什么原因造成的。Xen virq_定时器在崩溃前10分钟中断spike,这就是我们识别崩溃是否即将发生的方式 一旦xen cpu在尖峰tomcat消失后10分钟内中断尖峰 运行普通值设置。它是索引博客类型的内容。以下是我反复看到的错误: 严重:java.lang.OutOfMemoryError:java堆空间 在org.apache.lucene.search.ExactPhraseScorer。(ExactPhraseScorer.

更新:见

系统管理员发现Xen CPU中断出现峰值,不知道是什么原因造成的。Xen virq_定时器在崩溃前10分钟中断spike,这就是我们识别崩溃是否即将发生的方式

一旦xen cpu在尖峰tomcat消失后10分钟内中断尖峰

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

严重: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.GetFilteredScore(FilteredQuery.java:149) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:577) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:364) 位于org.apache.solr.search.solrindexearcher.getDocListNC(solrindexearcher.java:1296) 位于org.apache.solr.search.solrindexearcher.getDocListC(solrindexearcher.java:1176) 位于org.apache.solr.search.solrindexearcher.search(solrindexearcher.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)

位于org.apache.solr.core.SolrCore.execute(SolrCore.java:1386) 2013年5月16日凌晨1:04:46 org.apache.solr.common.SolrException日志 严重: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.GetFilteredScore(FilteredQuery.java:149) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:577) 位于org.apache.lucene.search.indexsearch.search(indexsearch.java:364) 位于org.apache.solr.search.solrindexearcher.getDocListNC(solrindexearcher.java:1296) 位于org.apache.solr.search.solrindexearcher.getDocListC(solrindexearcher.java:1176) 位于org.apache.solr.search.solrindexearcher.search(solrindexearcher.java:375)

位于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环境变量中来增加内存分配。

您只是耗尽了堆空间。您的新增设置是什么?请参见上文。您在Solr?2000文档中保存的文档数是多少。我的团队有一个隐秘的怀疑,那就是我发送给solr的条款数量。我在solr服务器的帖子中看到了多达95到106个术语。无法证明这一点,但我的团队认为这就是违规者。以下是解决此问题的方法:感谢您的回复Fuu,我在上面添加了设置信息。
export JAVA_OPTS="-Xms1024m -Xmx4096m"