Frage OutOfMemory mit Solr4


Ich indexiere den Inhalt, den ich habe und nach dem Upgrade meiner Solr-Instanz auf Solr 4 bin ich mit einigen OutOfMemories konfrontiert. Die ausgelöste Ausnahme ist:

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

Gibt es einen bekannten Bug oder etwas, das ich testen könnte, um es loszuwerden?

Innerhalb dieses Upgrades haben sich zwei Dinge geändert:

  • solr Version (von 3.4 zu 4.0);
  • Lucene Spielversion (von LUCENE_34 zu LUCENE_40).

5
2017-12-05 09:20


Ursprung


Antworten:


Es scheint so, als würde beim Zugriff auf Protokolle der Arbeitsspeicher knapp werden. Das ist natürlich nicht besonders sinnvoll, mit einem 'Out of Memory'-Fehler, natürlich, aber einen Versuch wert, besonders nach dem Sehen diese Beschwerde in Bezug auf SOLR 4.0 Protokollierung. Dies gilt insbesondere dann, wenn dies bei einer Indexerstellung eines Formulars oder bei einer großen Anzahl von Aktualisierungen auftritt.

Versuchen Sie also, das Update-Log zu deaktivieren, was meiner Meinung nach durch einen Kommentar erledigt werden kann:

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

in solrconfig.xml.


BEARBEITEN:

Ein anderer (möglicherweise besserer) Ansatz dazu, einen weiteren Blick darauf zu werfen, könnte darin bestehen, öfter zu begehen. Das Wachstum des Aktualisierungsprotokolls scheint in direktem Zusammenhang damit zu stehen, dass viele in der Warteschlange befindliche Aktualisierungen auf das Festschreiben warten.

Wenn Sie Autocommit nicht aktiviert haben, sollten Sie versuchen, es in Ihrer Konfiguration hinzuzufügen.

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

Es gibt ein gutes Stück damit verbundener Diskussion und Empfehlung, auf der zu finden ist Dieser Thread.


6
2017-12-05 09:50



Ich stieß heute auf dasselbe Problem und nachdem ich @ femtoRgon's vorgeschlagenen Thread gelesen hatte, änderte ich folgendes in der solrconfig.xml

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

zu

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

Es gibt mir diesen Fehler nicht mehr. Es begeht also alle 15.000 Dokumente. Was in meinem Fall häufig genug ist, um nicht auf Speicherprobleme zu stoßen. In meinem MacBook Pro dauerte es ein paar Minuten, um ~ 4m Dokumente zu dokumentieren, die Produktinformationen enthielten (also kurze Dokumente).


0
2018-03-25 21:41