내 Solr 응용 프로그램에 대한 부하 테스트를 수행하고 있습니다. 색인에는 2 억 개가 넘는 문서가 있습니다. 기본 Jetty 서버를 사용하고 최대 JVM 메모리를 4GB로 설정합니다. 내 응용 프로그램을 테스트하기 위해 5000 개의 텍스트 쿼리를 만들어 Solr에게 하나씩 발행합니다. 그러나 약 110 개의 쿼리 후에 Jetty 컨테이너는 예외를 throw합니다.왜 이런 일이 발생합니까? 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)
64 비트 OS 및 64 비트 자바 버전이 있습니까? –
'-Xss4m'을 사용하여 JVM 스택을 늘려보십시오. –
나는 그것을 알아 낸다. 저급 Lucene 캐시 때문에 발생했습니다. 나는 그 코드를 무력화시킨다. 그런 다음 작동합니다. (다소 느리지 만) – Xiao