9

Solr アプリケーションの負荷テストを行っています。インデックスには 2 億を超えるドキュメントがあります。デフォルトの Jetty サーバーを使用し、最大 JVM メモリを 4GB に設定しました。アプリをテストするために、5000 個のテキスト クエリを作成し、それらを 1 つずつ 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)
4

1 に答える 1

3

明らかに、200M インデックスで負荷テストを処理するには、4Gb RAM は非常に少ないです。平均ドキュメント サイズが 1K の 3 億ドキュメントで Solr 4.2 のパフォーマンス テストを行いました。目標は、非ファセット クエリに対して 3 秒未満の安定した応答時間を実現できる最小限のマシン構成を把握することでした。100 の同時クエリの場合、最小のマシン構成は 8 CPU コア / 15Gb RAM であるという結果が得られました。もちろん、結果は多くの要因によって異なりますが、これをマシンのサイジングの経験則として使用できます。

于 2013-09-17T01:17:51.030 に答える