Solr uygulamam için bir yük testi yapıyorum. Endeks 200 milyondan fazla belgeye sahiptir. Varsayılan Jetty sunucusunu kullanıyorum ve maksimum JVM belleği 4GB olarak ayarladım. Uygulamamı test etmek için 5000 metin sorgusu hazırlayıp Solr'a tek tek veriyorum. Ancak, yaklaşık 110 sorgudan sonra, Jetty konteyner bir istisna atar.Neden bu her zaman olur? Solr OutOfMemoryError GC havai yük limiti aşıldı
Bu neden oluyor? Bunu nasıl çözebilirim?
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)
64 bit os ve 64 bit java sürümünüz var mı? –
'-Xss4m' kullanarak JVM yığınını artırmayı deneyin. –
Sadece anladım. Düşük seviye Lucene önbelleği neden oldu. Bu kodu devre dışı bırakıyorum. Sonra çalışır. (biraz yavaş olsa da) – Xiao