[CLOSE] Mal eingefroren, mal am Laufen...

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] Mal eingefroren, mal am Laufen...

Beitragvon Quix0r » Mi Mär 31, 2010 5:28 am

So wie es scheint gibt es zwei schwerwiegende Bugs:
1.) Keine Erreichbarkeit wegen moeglichem Memory-Leak, GC scheint wohl nicht aufzuraeumen, Speicher voll ausgelastet. Nach meistens ~10 Minuten kommt die Node wieder (reanimiert sich).
2.) "To many active crawler", passiert durchaus auch mal, egal wie viele Crawler eingestellt sind; 100, 200, 500, 1000 oder 50, 30.

Hier alle gezwitscherten Bilder in chronologischer Reihenfolge: (man beachte die blaue Linie (Speicherverbrauch):

Schon ein paar Minuten nach dem Start (!):
Was ist mit meiner Node wieder los?
Und erneut weg, Crawls laufen nur sehr langsam.
And back in order...
Waehrend der Auszeit kam sehr haeufig die besagte Meldung:
"To many crawlers active"
5 Stunden spaeter das selbe Problem: (vielleicht auch zwischendurch, keine Ahnung, war am Spielen, "officen")
Who wants a frozen #yacy node? Here it comes again. :(
And it works again, but for how long?
Now working perfectly, but maybe some slow, 1500 PPM was also possible.

Wenn die zwei Bugs gefixt sind, ich glaube, YaCy wird dann endlich stabiler...

Edit: Das meinte ich mit "jede Stunde neustarten", wieder ist meine Node weg. :(

Edit2: Anbei ein Thread-Dump, SVN 6785.
Dateianhänge
dump016l.log.bz2
jstack -l (mit Lock-Informationen)
(5.24 KiB) 24-mal heruntergeladen
dump015.log.bz2
Thread-Dump von jstack
(6.69 KiB) 23-mal heruntergeladen
Zuletzt geändert von Quix0r am Do Sep 23, 2010 4:51 am, insgesamt 3-mal geändert.
Quix0r
 
Beiträge: 1347
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: Mal eingefroren, mal am Laufen...

Beitragvon Orbiter » Mi Mär 31, 2010 6:15 pm

mal ne blöde frage: ist das dein 'komplett renovierter' code oder so wie im SVN?
Ich weiss du twitterst viel, aber sieht auch manchmal seltsam aus. Anstatt zu twittern "Und erneut weg, Crawls laufen nur sehr langsam" wärs mir lieber wir würden das hier anständig analysieren.

- dazu gehört dass du auch mal selber ins log schaust um zu sehen was dir der crawler so sagt
- wenn du 'keine erreichbarkeit' hast würde ich mal sagen es liegt an deinem router den du überlastet hast. speziell wenn du mehr als 100 threads dazu einstellst. aber das habe ich ja schon mal geschrieben, scheint bei dir kein Verständnis gefunden zu haben
- memory-leak ist ja quatsch. Wie stellst du das fest ausser über eine Vermutung? Speicher wird von Java immer voll ausgelastet.
- wenn du ansonsten ein 'Einfrieren' siehst musst du einen Thread dump machen um zu sehen was die Prozesse tun.
Orbiter
 
Beiträge: 5798
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Mal eingefroren, mal am Laufen...

Beitragvon Quix0r » Mi Mär 31, 2010 6:42 pm

Orbiter hat geschrieben:mal ne blöde frage: ist das dein 'komplett renovierter' code oder so wie im SVN?

Nein, der Code (String->CharSequence-Umgestelle) wurde hier nicht verwendet. Ich kann gerne mein komplettes Patch einstellen.

Orbiter hat geschrieben:Ich weiss du twitterst viel, aber sieht auch manchmal seltsam aus. Anstatt zu twittern "Und erneut weg, Crawls laufen nur sehr langsam" wärs mir lieber wir würden das hier anständig analysieren.

Ist nicht wirklich viel, aber will mich hier auch nicht verteidigen. Zur Analyse habe ich bereits mein (einfach mal ausprobiertes) Patch eingestellt: viewtopic.php?f=5&t=2629&hilit=&p=19741#p19722

Orbiter hat geschrieben:- dazu gehört dass du auch mal selber ins log schaust um zu sehen was dir der crawler so sagt

Okay, nach welchem Prefix (applicationName) muss ich suchen? "CRAWLER"? Dann habe ich es leichter, die Meldungen zu finden, anderfalls muesste ich 20 Logfiles haendisch durchwuehlen.

Orbiter hat geschrieben:- wenn du 'keine erreichbarkeit' hast würde ich mal sagen es liegt an deinem router den du überlastet hast. speziell wenn du mehr als 100 threads dazu einstellst. aber das habe ich ja schon mal geschrieben, scheint bei dir kein Verständnis gefunden zu haben

Doch ist angekommen, wuerde YaCy an die Grenze treiben, entsprechend habe ich bereits wieder die Standart-Einstellung von 30 Crawlern. An meinen Router liegt es definitiv nicht, der routet brav durch, die von mir jetzt bezeichnete "keine Erreichbarkeit" ist ein lokaler Zugriff (http://127.0.0.1:8080/) und somit geht dieser nicht ueber den Router. ;)

Orbiter hat geschrieben:- memory-leak ist ja quatsch. Wie stellst du das fest ausser über eine Vermutung? Speicher wird von Java immer voll ausgelastet.

Dann wundert es mich, wieso solch Grafiken entstehen koennen? Ich meine jetzt die blaue Linie, vermutlich arbeitet entweder der GC nicht oder es liegt ein anderes Problem vor. Wie oft wird die Methode Memory.gc() verwendet? Eigentlich bremst du mit der den GC aus, man sollte es eher anders machen und es verhindern dass er ueberhaupt so viel laufen muss, sprich Pipe-Through-Klassen und nicht welche, die immer auf's neue instanziert und nach Gebrauch wieder gesaeubert werden muessen und dabei selbst grosse Konstruktoren und init-Bloecke haben (habe ich schon oefters im YaCy-Code gesehen).

Orbiter hat geschrieben:- wenn du ansonsten ein 'Einfrieren' siehst musst du einen Thread dump machen um zu sehen was die Prozesse tun.

Komplett weggefroren war sie ja nicht, hatte aber wohl mit Speichermangel zu kaempfen bzw. wie oben vermutet, mit volllaufendem Heap zu kaempfen. Ersteres kann ich aus finianziellen Gruenden nicht beseitigen, da ich kaum Geld habe. :( Da ist dann ein neues Mainboard mit z.B. 8 Slots und je ein 4 GB RAM Modul einfach nicht drinne. Und eine zweite Node aufsetzen, klappt auch nicht wegen Geldmangels - ich habe heute eine dicke Stromrechnung bekommen und wurde abermals hochgesetzt, jetzt muss ich genauer hinsehen und eventuell Anbieter wechseln.

Das mit dem Thread-Dump kann ich waehrend des Einfrierens (per Web-Interface jedenfalls) komplett in die Tonne treten, da dieses sehr lahm (oder gar nicht erreichbar) ist. Mit killall -3 java hatte ich es mal probiert, kam leider kein Dump, oder wo wird der abgelegt?

Edit: Habe es nun mit "jstack -l <pid>" hinbekommen. Siehe dump016l.log.bz2.
Quix0r
 
Beiträge: 1347
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 2 Gäste

cron