exception - 为什么这种情况一直发生? Solr OutOfMemoryError GC超出开销限制

标签 exception solr jetty

我正在为我的Solr应用程序进行负载测试。该索引拥有2亿多份文档。我使用默认的Jetty服务器,并将最大JVM内存设置为4GB。为了测试我的应用程序,我组成了5000个文本查询,并将它们逐一发送给Solr。但是,大约110次查询后,Jetty容器将引发异常。

为什么会这样?我该如何解决?

SEVERE: java.lang.OutOfMemoryError: GC overhead limit exceeded
    at org.apache.lucene.util.AttributeImpl.clone(AttributeImpl.java:196)
    at org.apache.lucene.util.AttributeSource$State.clone(AttributeSource.java:116)
    at org.apache.lucene.util.AttributeSource$State.clone(AttributeSource.java:119)
    at org.apache.lucene.util.AttributeSource.captureState(AttributeSource.java:349)
    at org.apache.solr.highlight.TokenOrderingFilter.incrementToken(DefaultSolrHighlighter.java:595)
    at org.apache.lucene.search.highlight.OffsetLimitTokenFilter.incrementToken(OffsetLimitTokenFilter.java:43)
    at org.apache.lucene.analysis.CachingTokenFilter.fillCache(CachingTokenFilter.java:78)
    at org.apache.lucene.analysis.CachingTokenFilter.incrementToken(CachingTokenFilter.java:50)
    at org.apache.lucene.search.highlight.Highlighter.getBestTextFragments(Highlighter.java:225)
    at org.apache.solr.highlight.DefaultSolrHighlighter.doHighlightingByHighlighter(DefaultSolrHighlighter.java:468)
    at org.apache.solr.highlight.DefaultSolrHighlighter.doHighlighting(DefaultSolrHighlighter.java:379)
    at org.apache.solr.handler.component.HighlightComponent.process(HighlightComponent.java:116)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:194)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1368)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)

最佳答案

显然4Gb RAM不足以处理200M索引上的负载测试。我们针对300M文档(平均文档大小为1K)对Solr 4.2进行了性能测试。目的是找出最小的机器配置,对于非构面查询,我们可以在这些机器上获得稳定的响应时间,<3秒。对于100个并发查询,我们的结果显示最小的计算机配置是8个CPU内核/15Gb RAM。当然,结果会因许多因素而有所不同,但是您可以将其作为衡量机器尺寸的经验法则。

关于exception - 为什么这种情况一直发生? Solr OutOfMemoryError GC超出开销限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12127064/

相关文章:

web-services - Axis 、Glassfish、SSLHandshakeException

c# - 流利的 NHibernate,实现 ISQLExceptionConverter 的正确方法

java - 通过具有安全凭证的 ModulatedSolrParams Solr 导入

java - Servlet 无法为简单的 applet 提供服务

intellij-idea - 如何从intellij内部运行jetty?

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

java - 如何编写 Solr 插件?

xml - 是否有任何 Apache Solr schema.xml 生成器工具?

java - 在 SSL 上运行嵌入式 jetty 的问题

exception - Haskell 中的纯异常