2012-08-26 33 views
6

Tôi đang làm một bài kiểm tra tải cho ứng dụng Solr của tôi. Chỉ số này có hơn 200 triệu tài liệu. Tôi sử dụng máy chủ Jetty mặc định và thiết lập bộ nhớ JVM tối đa là 4GB. Để kiểm tra ứng dụng của tôi, tôi tạo ra 5000 truy vấn văn bản và phát hành chúng cho từng người một. Tuy nhiên, sau khoảng 110 truy vấn, container Jetty ném một ngoại lệ.Tại sao điều này xảy ra mọi lúc? Solr OutOfMemoryError GC vượt quá giới hạn vượt quá

Tại sao điều này lại xảy ra? Làm thế nào tôi có thể giải quyết nó?

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

Bạn có phiên bản 64 bit và phiên bản java 64 bit không? –

+0

Thử tăng chồng JVM bằng cách sử dụng '-Xss4m'. –

+1

Tôi chỉ tìm ra. Đó là do bộ đệm Lucene cấp thấp. Tôi vô hiệu hóa mã đó. Sau đó, nó hoạt động. (mặc dù hơi chậm) – Xiao

Trả lời

1

Rõ ràng 4Gb RAM rất thấp để xử lý kiểm tra tải trên chỉ mục 200M. Chúng tôi đã thực hiện thử nghiệm hiệu suất cho Solr 4.2 trên tài liệu 300M với kích thước tài liệu trung bình là 1K. Mục đích là để tìm ra cấu hình máy tối thiểu mà chúng ta có thể có thời gian đáp ứng ổn định < 3 giây đối với các truy vấn không có mặt. Đối với 100 truy vấn đồng thời kết quả của chúng tôi cho thấy cấu hình máy tối thiểu là 8 lõi CPU/RAM 15Gb. Tất nhiên kết quả sẽ khác nhau tùy thuộc vào nhiều yếu tố, tuy nhiên bạn có thể sử dụng điều này như quy tắc của ngón tay cái cho kích thước máy của bạn.

Các vấn đề liên quan