[CLOSE] 6631: Speichermangel beim Mergen von grossen Blobs?

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

[CLOSE] 6631: Speichermangel beim Mergen von grossen Blobs?

Beitragvon Quix0r » Fr Jan 29, 2010 8:20 pm

Folgende Exception kam eben beim Mergen von einem 5 GB Blob:
[codeW 2010/01/29 20:19:14 StackTrace 129727584 bytes needed for RowCollection grow after OutOfMemoryError Java heap space: 137022192 free at Fri Jan 29 20:19:14 CET 2010
net.yacy.kelondro.index.RowSpaceExceededException: 129727584 bytes needed for RowCollection grow after OutOfMemoryError Java heap space: 137022192 free at Fri Jan 29 20:19:14 CET 2010
at net.yacy.kelondro.index.RowCollection.ensureSize(RowCollection.java:236)
at net.yacy.kelondro.index.RowCollection.addUnique(RowCollection.java:347)
at net.yacy.kelondro.index.RowCollection.addUnique(RowCollection.java:325)
at net.yacy.kelondro.index.ObjectIndexCache.addUnique(ObjectIndexCache.java:158)
at net.yacy.kelondro.index.HandleMap.putUnique(HandleMap.java:206)
at net.yacy.kelondro.index.HandleMap$initDataConsumer.call(HandleMap.java:376)
at net.yacy.kelondro.index.HandleMap$initDataConsumer.call(HandleMap.java:317)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)[/code]
Musste neustarten. Auf mysterioeser Weise kamen noch mehr solch Meldungen, hier mal eine davon:
Code: Alles auswählen
W 2010/01/29 20:19:45 StackTrace 2240000 bytes needed for RowCollection grow after OutOfMemoryError Java heap space: 5193192 fr
ee at Fri Jan 29 20:19:45 CET 2010
net.yacy.kelondro.index.RowSpaceExceededException: 2240000 bytes needed for RowCollection grow after OutOfMemoryError Java heap
space: 5193192 free at Fri Jan 29 20:19:45 CET 2010
        at net.yacy.kelondro.index.RowCollection.ensureSize(RowCollection.java:236)
        at net.yacy.kelondro.index.RowCollection.<init>(RowCollection.java:92)
        at net.yacy.kelondro.index.RowSet.<init>(RowSet.java:50)
        at net.yacy.kelondro.index.ObjectIndexCache.reset(ObjectIndexCache.java:71)
        at net.yacy.kelondro.index.ObjectIndexCache.<init>(ObjectIndexCache.java:56)
        at net.yacy.kelondro.index.HandleMap.<init>(HandleMap.java:72)
        at net.yacy.kelondro.index.HandleMap.<init>(HandleMap.java:84)
        at net.yacy.kelondro.blob.HeapReader.initIndexReadDump(HeapReader.java:149)
        at net.yacy.kelondro.blob.HeapReader.<init>(HeapReader.java:75)
        at net.yacy.kelondro.blob.HeapModifier.<init>(HeapModifier.java:57)
        at net.yacy.kelondro.blob.ArrayStack.<init>(ArrayStack.java:189)
        at net.yacy.kelondro.rwi.ReferenceContainerArray.<init>(ReferenceContainerArray.java:69)
        at net.yacy.kelondro.rwi.IndexCell.<init>(IndexCell.java:90)
        at de.anomic.search.Segment.<init>(Segment.java:106)
        at de.anomic.search.Segments.segment(Segments.java:140)
        at de.anomic.search.Segments.segment(Segments.java:132)
        at de.anomic.search.Switchboard.<init>(Switchboard.java:349)
        at net.yacy.yacy.startup(yacy.java:221)
        at net.yacy.yacy.main(yacy.java:1029)

Dann solche:
Code: Alles auswählen
I 2010/01/29 20:21:26 kelondroBLOBHeap wrote a dump for the 80000 index entries of text.index.20100129035527417.blob in 1182 milliseconds.
I 2010/01/29 20:21:26 kelondroBLOBHeap wrote a dump for the 80000 index entries of text.index.20100127161151828.blob in 130 milliseconds.
I 2010/01/29 20:21:26 kelondroBLOBHeap wrote a dump for the 80000 index entries of text.index.20100128170409919.blob in 38 milliseconds.
I 2010/01/29 20:21:26 kelondroBLOBHeap wrote a dump for the 80000 index entries of text.index.20100128083442608.blob in 13 milliseconds.
I 2010/01/29 20:21:27 kelondroBLOBHeap wrote a dump for the 80000 index entries of text.index.20100129001213703.blob in 567 milliseconds.
I 2010/01/29 20:21:27 kelondroBLOBHeap wrote a dump for the 80000 index entries of text.index.20100128024839788.blob in 18 milliseconds.

Und danach schien YaCy weggefroren zu sein. Ein "killall -KILL java" warf zwar den Java-Prozess raus, fuehrte aber dazu, dass 5 GB RAM verbaucht wurden, und "top" dies nicht anzeigte, keines der augelisteten Programme verbrauchte so viel zuvor.

Zum Vergleich, hier eine "free" Ausgabe nach Neustart:
Code: Alles auswählen
             total       used       free     shared    buffers     cached
Mem:       8231404     551624    7679780          0      40612     272984
-/+ buffers/cache:     238028    7993376
Swap:     10000448          0   10000448

Hier sind vielleicht auch relevante Startup-Argumente an Java:
viewtopic.php?f=5&t=2648

Die tausend Blobs hat er nun mergen koennen - es waren etwas mehr als 1060 - und crawlt nun wieder, das Problem koennte aber wieder auftreten, wenn er grosse mergen will, obwohl nicht genug Speicher vorhanden ist.
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste