2012-08-26 26 views
6

私のSolrアプリケーションの負荷テストを行っています。このインデックスには2億以上の文書があります。私はデフォルトのJettyサーバを使用し、最大JVMメモリを4GBに設定します。私のアプリをテストするために、私は5000のテキストクエリを作成し、それをSolrに1つずつ発行します。ただし、約110クエリ後、Jettyコンテナは例外をスローします。これはいつも起こるのですか? Solr OutOfMemoryError GCオーバーヘッドの上限を超えました

どうしてですか?どうすれば解決できますか?

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) 
+0

64ビットのOSと64ビットのJavaのバージョンがありますか? –

+0

'-Xss4m'を使ってJVMスタックを増やしてみてください。 –

+1

私はただそれを理解します。それは、低レベルのLuceneキャッシュによって引き起こされました。私はそのコードを無効にする。その後、それは動作します。 (少し遅いですが) – Xiao

答えて

1

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

関連する問題