2012-12-05 22 views
5

Tôi đang lập chỉ mục nội dung tôi có và sau khi nâng cấp bản sao Solr của mình lên solr 4 Tôi đang đối mặt với một số OutOfMemories. Trường hợp ngoại lệ được ném là:OutOfMemory với Solr4

INFO org.apache.solr.update.UpdateHandler - start commit{flags=0,_version_=0,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false} 
ERROR o.a.solr.servlet.SolrDispatchFilter - null:java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space 
     at org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:469) 
     at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:297) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166) 
     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.OutOfMemoryError: Java heap space 

Có một số lỗi hoặc điều gì đó mà tôi có thể thử nghiệm để loại bỏ lỗi đó không?

Trong việc nâng cấp này hai điều thay đổi:

  • phiên bản Solr (3.4-4.0);
  • phiên bản phù hợp với lucene (từ LUCENE_34 đến LUCENE_40).
+0

Bạn đang sử dụng cơ sở hạ tầng nào? Whats kích thước của dữ liệu? và bất kỳ thay đổi nào trong cấu hình. Nguyên nhân Solr sử dụng quản lý bộ nhớ MMAP theo mặc định từ Solr 3.1 và điều này có thể gây ra Out of Memory. – Jayendra

+0

Với solr 3.4 chúng tôi có chỉ số 5GB và không có cấu hình nào được thực hiện từ cấu hình phân phối cho Solr 3.4, tương tự đã được thực hiện cho Solr 4 (không có thay đổi cấu hình) –

Trả lời

6

Dường như sắp hết bộ nhớ khi truy cập nhật ký. Điều đó có thể không có ý nghĩa đặc biệt, với lỗi 'Hết bộ nhớ', tất nhiên, nhưng đáng để quay, đặc biệt sau khi nhìn thấy this complaint về ghi nhật ký SOLR 4.0. Đặc biệt vì vậy nếu điều này xảy ra trong quá trình xây dựng lại chỉ mục của một số biểu mẫu hoặc tải nặng các bản cập nhật.

Vì vậy, cố gắng vô hiệu hóa các bản ghi cập nhật, mà tôi tin rằng có thể được thực hiện bằng cách bình luận ra:

<updateLog> 
    <str name="dir">${solr.data.dir:}</str> 
</updateLog> 

trong solrconfig.xml.


EDIT:

khác (có thể là tốt hơn) cách tiếp cận này, lấy cái nhìn khác vào nó, có thể là để cam kết thường xuyên hơn. Sự tăng trưởng của nhật ký cập nhật dường như có liên quan trực tiếp đến việc có nhiều cập nhật xếp hàng chờ đợi cam kết.

Nếu bạn không có autocommit kích hoạt, bạn có thể muốn thử thêm nó trong cấu hình của bạn, một cái gì đó như:

<autoCommit> 
    <maxTime>15000</maxTime> 
    <openSearcher>false</openSearcher> 
</autoCommit> 

Có một chút tốt của cuộc thảo luận liên quan và đề nghị được tìm thấy trên this thread.

+1

Tôi biết rằng điều này có thể hơi muộn, nhưng thiết lập nhật ký mức để chỉ cảnh báo trong log4j.properties cố định cùng một vấn đề tôi đã có với solr. Bạn trả lời dẫn tôi ít nhất là nguồn gốc của vấn đề của tôi. Các tệp nhật ký của tôi rất lớn (600M). Cảm ơn! – marsalal1014

0

Tôi chạy vào cùng một vấn đề ngày hôm nay và sau khi đọc @ chủ đề gợi ý femtoRgon, tôi đã thay đổi sau trong solrconfig.xml

<autoCommit> 
    <maxTime>15000</maxTime> 
    <openSearcher>false</openSearcher> 
</autoCommit> 

để

<autoCommit> 
    <maxDocs>15000</maxDocs> 
    <openSearcher>false</openSearcher> 
</autoCommit> 

Nó không còn mang lại cho tôi lỗi . Vì vậy, nó cam kết mỗi 15.000 tài liệu. Mà trong trường hợp của tôi là thường xuyên, đủ để không chạy vào các vấn đề bộ nhớ. Trong MacBook Pro của tôi phải mất vài phút để lập chỉ mục ~ 4m tài liệu chứa thông tin sản phẩm (vì vậy tài liệu ngắn).

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