Ich versuche, eine Drupal-Website mit etwas rund 1,5 Millionen Knoten zu indizieren. Meist einfache Knoten, ca. 100k Knoten sind größer (pdf-Dokumente mit Tika bearbeitet).Apache SOLR 3.5 hängt beim Indexieren
Ich habe es schon mehrfach probiert und es schlägt immer auf die gleiche Art und Weise: SOLR stürzt ab/hängt mit hoher Auslastung und Speicherauslastung nach mehreren Tagen der Indexierung (nicht auf maximalen Durchsatz per se). Zuerst habe ich die Installation auf eine größere Box verschoben, von 2 CPU/2 GB Speicher auf 8 Speicher 16 GB. Dies behob das Problem für eine Weile, aber jetzt ist die Situation fast identisch. Ich bin in der Lage, etwa 500.000 Knoten zu indizieren.
Java verwendet Weg, um mehr Speicher als die Heap-Größe (derzeit 8000M) (viel Swapping) Last ist rund 3,0 (für den kleinen und großen Kasten) Solr nicht für die Indizierung reagiert. Das Suchen ist langsam aber möglich. Admin-Schnittstelle reagiert
Neustart SOLR behebt das Problem für eine Weile, aber es kommt immer wieder zurück.
Beim Abfragen der Indexgröße während eines Absturzes bemerke ich, dass die Verzeichnisgröße stark schwankt. Nach dem Start von SOLR ist das Verzeichnis etwa 6,5 und arbeitet bis zu 13 GB, bevor es wieder auf 6,5 GB fällt. Das wiederholt sich.
Ich habe die Anweisungen zum Abmelden von Speicherfehlern hinzugefügt, aber dies liefert mir keine Protokolle.
Ich verwende die Standard-SOLR-Konfiguration für Drupal 6. Ich habe verschiedene Mergefactors verwendet, aber das scheint nichts zu tun, um das Problem zu beheben.
Wer mit Ideen? Wenn Sie mehr Informationen benötigen, werde ich versuchen, so schnell wie möglich zu reagieren!
Dies ist in meinem Protokoll zur Zeit: Exception in thread "Lucene Thread # Merge 0" org.apache.lucene.index.MergePolicy $ MergeException: java.io.FileNotFoundException:/usr/local/solr35/example /multicore/mydivp/data/index/_1bm.fnm (Keine solche Datei oder Verzeichnis) bei org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException (ConcurrentMergeScheduler.java:517) bei org.apache.lucene.index.ConcurrentMergeScheduler $ MergeThread.run (ConcurrentMergeScheduler.java:482) Verursacht von: java.io.FileNotFoundException: /usr/local/solr35/example/multicore/mydivp/data/index/_1bm.fnm (Keine solche Datei oder Verzeichnis) bei java.io.RandomAccessFile.open (Native Methode) bei java.io.RandomAccessFile. (RandomAcc essFile.java:233) bei org.apache.lucene.store.MMapDirectory.openInput (MMapDirectory.java:214) bei org.apache.lucene.store.FSDirectory.openInput (FSDirectory.java:345) bei org. apache.lucene.index.FieldInfos. (FieldInfos.java:74) bei org.apache.lucene.index.SegmentCoreReaders. (SegmentCoreReaders.java:73) bei org.apache.lucene.index.SegmentReader.get (SegmentReader. java: 115) bei org.apache.lucene.index.IndexWriter $ ReaderPool.get (IndexWriter.java:705) bei org.apache.lucene.index.IndexWriter.mergeMiddle (IndexWriter.java:4400) bei org. apache.lucene.index.IndexWriter.merge (IndexWriter.java:3940) bei org.apache.lucene.index.ConcurrentMergeScheduler.doMerge (ConcurrentMergeScheduler.java:388) bei org.apache.lucene.index.ConcurrentMergeScheduler $ MergeThread.run (ConcurrentMergeScheduler.java:456) 2012-04-03 14:26:25.409: INFO :: Shutdown Haken komplett
Mit freundlichen Grüßen, Bram Rongen
-Update 2012-04-06
Es ist immer noch nicht funktioniert .. Inspizieren meine Daten/index/Verzeichnis Solr zeigt hält Wiederaufbau/Zusammenführung .. Ein Segment wird erstellt und sobald das erledigt ist, wird das vorherige gelöscht und Solr startet erneut, auch wenn keine neuen Dokumente hinzugefügt werden. Eine weitere seltsame Sache ist, dass die .fdt-Datei nicht wächst, obwohl der Solr-Status angibt, dass etwa 300.000 Dokumente mehr indiziert sind. Die größte .fdt-Datei im Verzeichnis ist nie größer als 4,9 GB.
Irgendwelche Gedanken?
Die Variation der Speicherplatznutzung ist normal. Solr führt das automatische Zusammenführen der Indexsegmente durch, wenn sie zu groß werden. Nicht genügend Arbeitsspeicherfehler sollten bereits im Hauptservlet-Containerprotokoll, catalina.out für Tomcat oder jetty.log für Jetty, protokolliert werden. Welche Version von Java? –
Sie verstehen nicht, wie Java Speicher verwendet, [der Heap ist nicht das, was die JVM tatsächlich verwendet, es ist viel komplizierter als das] (http://stackoverflow.com/a/9146775/177800). –
Ich benutze Ubuntu 10.04 mit dem neuesten Java: Java-Version "1.6.0_20" OpenJDK Laufzeitumgebung (IcedTea6 1.9.13) (6b20-1.9.13-0ubuntu1 ~ 10.04.1) OpenJDK 64-Bit-Server-VM (Build 19.0-b09, gemischter Modus) Bevor ich auf CentOS lief .. Ich mag die Art und Weise falsch verstehen, wie Java Speicher verwendet, aber im Moment ist es egal, welchen Wert ich -XmX, der JVM zuweisen Essen Sie alle physischen Speicher und tauschen Sie Tötungsleistung;) –