Indexing Cache

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.

Indexing Cache

Beitragvon zottel » Sa Nov 15, 2014 1:04 am

Kann es sein, dass die Leerung des Indexing Cache nicht immer wie geplant funktioniert und das der Grund ist, weshalb bei viel Crawling der Speicher immer knapper wird?

Hintergrund für die Frage:

Ich habe vorhin Performance_p auf meinem yacy beobachtet, als der Speicher immer mehr zur Neige ging. Dabei fiel mir folgendes auf:

Solange der freie Speicher noch ausreichend war, also von den Maxima immer relativ viel Speicher wieder freigegeben werden konnte, zeigten auch die Words in Indexing Cache ein ähnliches Verhalten, also hoch und wieder runter etc.

Irgendwann gingen die dann aber nicht mehr runter. Obwohl der Indexing Cache auf ein Maximum von 50.000 words gesetzt war, lief er auf Werte von über 160.000 hoch – und nicht, wie sonst üblich, zwischendurch wieder runter. Also kein Zickzack, sondern eine kontinuierlich leicht ansteigende Kurve. Zwischendurch ging der Wert dann immer einmal ganz auf null zurück, um beim nächsten Wert direkt wieder auf > 160.000 zu sein.

Ich habe das Maximum für den Indexing Cache jetzt mal auf 30.000 words gesetzt, damit die Leerung früher einsetzt. (Ich weiß, das macht das Crawling langsamer, aber lieber das als ein yacy, der wegen Speicherüberfüllung nicht mehr reagiert.) Die Zickzack-Kurve für die Words in Indexing Cache stoppt jetzt zum Teil bei ca. 30.000 und wird dann wieder kleiner, zum Teil geht sie aber hoch auf ca. 60.000, bevor sie sich wieder „beruhigt“, und zwar in etwa der Hälfte der Fälle.

Ist das so zu erwarten, verstehe ich die Einstellung falsch? Oder stimmt da etwas mit dem Indexing Cache nicht?
zottel
 
Beiträge: 51
Registriert: Mi Jan 16, 2013 3:04 pm

Re: Indexing Cache

Beitragvon sixcooler » Sa Nov 15, 2014 1:37 am

Hallo zottel,

wenn ich das richtig im Hirn habe, ist das mit dem Flushen / Leeren des RWI-/Wort-Caches Teil des Cleanup-Prozesses ist.
D.h. es kann sein das der Cache nicht geleert wird wenn der zur Verfügung stehende Speicher zu knapp ist oder aber der Systemload zu hoch ist.
Die Grenzwerte dazu kannst Du unter /PerformanceQueues_p.html einstellen.
Es macht Sinn den Load- und den Speicher- Wert des Cleanup-Prozesses höher zu setzen als den des 'Local Crawl'.
(damit eher mit dem Crawlen aufgehört wird, als mit dem Cleanup.
Man könnte sich fragen ob es überhaupt Sinnvoll ist diesen Cleanup-Prozess bei magerenn Ressourcen nicht auszuführen: ja ist es, weil z.B. das Schreiben des Cacheinhalts auf die Platte eben auch Resourcen braucht.

Cu, sixcooler.
sixcooler
 
Beiträge: 494
Registriert: Do Aug 14, 2008 5:22 pm

Re: Indexing Cache

Beitragvon zottel » Sa Nov 15, 2014 1:46 am

Ok, danke.

Die Werte waren bereits besser als für den Crawler (Maxload Crawler 4, Cleanup 16, Minmem Crawler 12M, Cleanup 0). Allerdings waren die idle times auf 300.000 ms gesetzt, also fünf Minuten. Wenn ich das richtig verstehe, wurde der Cleanup-Prozess also nur alle fünf Minuten gestartet? Diese Werte habe ich jetzt mal auf 30.000 ms runtergesetzt, vielleicht hilft das ja.
zottel
 
Beiträge: 51
Registriert: Mi Jan 16, 2013 3:04 pm

Re: Indexing Cache

Beitragvon zottel » Sa Nov 15, 2014 2:21 am

Hm, mir ist gerade noch aufgefallen, dass es zu den Words in Cache zwei sich widersprechende Informationen auf Performance_p gibt:

Die grüne Linie – von der habe ich bis jetzt gesprochen. Die geht auch jetzt noch oft über 50K hinaus.

Und der Wert in der grauen Infozeile über der Grafik, der mir bisher nicht aufgefallen war. Die Werte dort bewegen sich manchmal in der Nähe von denen der grünen Linie, manchmal sind sie deutlich niedriger. Diese Werte gehen immer nur kurz knapp über den eingestellten Grenzwert 30.000 hinaus, dann gehen sie wieder auf nahe Null zurück, bevor sie wieder ansteigen. Genau das erwartete Verhalten also.

Sollten die beiden eigentlich das gleiche repräsentieren oder stellt die grüne Linie etwas ganz anderes dar als ich denke?
zottel
 
Beiträge: 51
Registriert: Mi Jan 16, 2013 3:04 pm

Re: Indexing Cache

Beitragvon sixcooler » Sa Nov 15, 2014 1:17 pm

Hallo zottel,

ja der Wert oben in der Grafik 'Words ind Cache' und die grüne Linie sollten eigentlich den gleichen Wert darstellen.
Ich habe die Umsetzung nicht genauer im Gedächtniss, aber evtl. kommt ein Unterschied aus einer 2fachen abfrage des Cachewertes für die beiden Darstellungen.

Dieser RWI-Cache wird geleert wenn entweder die Menge der RWIs größer dem Eingestellten ist oder vom Cleanupthread, der im eingestellten Zeitinterval läuft.
Wenn sehr stark gecrawlt wird, und / oder durch dht-in die Menge der RWIs im Cache sehr schnell wächst, kann der Wert aber auch mal überschwingen.
Es gibt Seiten die eine 5-Stellige Menge an Worten haben - und diese kommen in einem 'Rutsch' ind den Cache - ohne das zwischendurch geleert würde.

Cu, sixcooler.
sixcooler
 
Beiträge: 494
Registriert: Do Aug 14, 2008 5:22 pm

Re: Indexing Cache

Beitragvon otter » Mo Dez 22, 2014 9:58 pm

Wenn mein YaCy (mit Crawling) mehr als einen Tag läuft, habe ich das gleiche Ergebnis: Der Indexing Cache enthält zunehmend mehr Worte und wird nicht mehr geleert.
Ich habe es mit verschiedenen Maximalgrößen versucht: 50.000, 20.000, 2.000. Kein Unterschied.
Bei ca. 200.000 hilft bei mir dann nur Neustart.

Für den CleanUp-Thread habe ich unter PerformanceQueues_p.html die Default-Werte eingestellt: Min-Memory=0k und Max-Load=16.
Der sollte also regelmäßig laufen.

Gibt es eine Möglichkeit diesen Cache manuell zu leeren?

Gruß, otter
otter
 
Beiträge: 16
Registriert: Mo Feb 10, 2014 9:33 pm

Re: Indexing Cache

Beitragvon otter » Mi Jan 07, 2015 9:21 pm

Ein paar neue Erkenntnisse:
Das Leeren des Caches findet beim Überschreiten der Grenze nahezu augenblicklich statt. (Höchstens einige Sekunden danach)
Der CleanUp-Thread scheint sich nicht darum zu kümmern.
Auch ohne Crawling - allein durch DHT-In - wird der Cache gefüllt und überschreitet auch dann die Grenze.

Jetzt schau ich mir mal den Source an. Vielleicht finde ich etwas...
otter
 
Beiträge: 16
Registriert: Mo Feb 10, 2014 9:33 pm

Re: Indexing Cache

Beitragvon otter » Mi Feb 25, 2015 10:32 pm

Alle paar Monate komme ich etwas weiter :D
Ich habe nun festgestellt, dass das Problem daher rührt, dass der FlushThread an der folgenden Stelle hängenbleibt (ewig wartet):
@zottel: Kannst du das in Deinem ThreadDump auch so sehen?

Code: Alles auswählen
Thread= IndexCell.FlushThread(/home/yacy/yacy/DATA/INDEX/freeworld/SEGMENTS/default) id=36 WAITING
at java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:324)
at net.yacy.kelondro.rwi.IODispatcher.merge(IODispatcher.java:127)
at net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkAnySmallFiles(ReferenceContainerArray.java:414)
at net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:198)
at net.yacy.kelondro.rwi.IndexCell.access$900(IndexCell.java:65)
at net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:172)
at net.yacy.kelondro.rwi.IndexCell$FlushThread.run(IndexCell.java:122)
otter
 
Beiträge: 16
Registriert: Mo Feb 10, 2014 9:33 pm

Re: Indexing Cache

Beitragvon otter » Fr Apr 03, 2015 5:28 pm

Should be fixed with version 1.830/09118.
otter
 
Beiträge: 16
Registriert: Mo Feb 10, 2014 9:33 pm


Zurück zu Fragen und Antworten

Wer ist online?

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

cron