Benutzer:Quix0r

Aus YaCyWiki
Wechseln zu: Navigation, Suche

Realer Name: Roland

Herkunft : Krefeld (seit einem Jahr)

ICQ  : Acht-Acht-Null-Neun-Zwei-Neun-Sechs (wegen der Spambots)

E-Mail  : roland at mxchange dot org

Jabber  : Quix0r@jabber.org

YaCy-Node: [1]

News:
2010-11-06: Aus dem Urlaub (ist schon etwas her) frisch verliebt zurueck und alle Patches aktualisiert.
2010-06-05: Noch ungewiss, aber ich versuche zum LinuxTag 2010 zu kommen. :)
2010-01-17: Seit gestern Abend betreibe ich wieder eine YaCy-Node. Zudem verwende ich experimentelle Einstellungen. Mehr dazu weiter unten!
2010-01-05: Jahreswechsel gut und ruhig ueberstanden. Die Nodes free-search1 und free-search2 sind seit gerauhmer Zeit tot.
2009-07-01: Profilseite angelegt

TODO-Liste fuer YaCy:
Diese Liste soll keine Prioritaetenliste sein, sondern einfach nur zusammengestellt, woran ich alles an YaCy am dran werkeln bin.

  • 100% HTTP/1.1 Header fixen
  • 100% Refacturing des Loggers Log, so dass dieser nicht mehr instanziert werden kann, sondern als "Utils-Klasse" fungiert (statische Methoden). Das spart wegen des new-Operators viele wichtige Resourcen ein.
    • Erstmal alle nicht-statischen Methoden + Konstruktur auf @deprecated gesetzt.
    • Neue Klasse LoggerNames dazugefuegt, diese beinhaltet alle Namen der Logger und kann (und brauch auch nicht) instanziert werden.
    • So gut wie alle isFinest() und anderen isFoo()-Verwandte aus dem Quellcode entfernt. Dies koennte auch in enqueueLog() geschehen und erspart somit eine Menge if()-Bloecke, die den Code noch weiter unleserlich machen.
  • 0% MIME-Handling (worauf vertraut YaCy? Nur Dateiendung ist schlecht, siehe hier why.
  • ~5% Fangen der allgemeinen Exception umwandeln in Fangen von konkreten Exceptions
  • 100% Leere catch-Bloecke mit Log.logExceptio(e); wenigstens erweitern (wieso tritt eine Exception auf, was ist das? Das sind die richtigen Fragen)
  • ~10% Ueberarbeitung der FAQ-Wikiseiten

Bitte fuegt in diese NICHTS ein. Ich nehme es eh wieder raus. :)

Experimentelle Einstellungen:
Mit den unten aufgefuehrten Einstellungen moechte ich eine bessere gesamte Reaktionszeit erziehlen. Gleichzeitig soll die DHT-Verteilung und das Crawlen nicht vernachlaessigt werden, was logischerweise eine schnelle Festplatte (UDMA-133 ist hier fuer eine IDE-Platte gewaehlt) und mehr CPU-Resourcen abverlangt.

10_httpd_busysleep=0
10_httpd_idlesleep=0
20_dhtdistribution_busysleep=1000
20_dhtdistribution_idlesleep=10000
30_peerping_busysleep=60000
30_peerping_idlesleep=60000
40_peerseedcycle_busysleep=1200000
40_peerseedcycle_idlesleep=1800000
50_localcrawl_busysleep=20
50_localcrawl_idlesleep=2000
60_remotecrawlloader_busysleep=10000
60_remotecrawlloader_idlesleep=20000
62_remotetriggeredcrawl_busysleep=20
62_remotetriggeredcrawl_idlesleep=2000
70_surrogates_busysleep=0
70_surrogates_idlesleep=20000
90_cleanup_busysleep=30000
90_cleanup_idlesleep=60000
autoReCrawl_busysleep=3600000
autoReCrawl_idlesleep=3600000
httpdMaxBusySessions=500
wordCacheMaxCount=100000
Diese sind mit Vorsicht und im Ganzen (alle auswechseln) zu verwenden. Verwendung auf eigene Gefahr hin!

Auffaelligkeiten:

  • Beim Starten ist der Peer nicht sofort fuer die Nodes erreichbar (liegt am niedrigen peerping?), kommt dann aber langsam.
  • Durch den kurzen Peer-Ping ist die Node fuer > 50 Peers erreichbar was fuer ein gutes Verteilen der DHT sorgt (muss noch weiter untersucht werden)
  • Einstellungen 50_localcrawl_busysleep und 50_localcrawl_idlesleep duerfen wohl nicht zu niedrig sein, sonst klappt das Crawlen nicht.
  • Der Indexer-Stacker ist auf 0 runter, vielleicht ein Bug? Siehe Screenshot und Statistik-Eintrag (abnehmende Wortzahl)
  • Die Einstellung wordCacheMaxCount darf offensichtlich nicht zu niedrig gewaehlt werden (80000 reicht fast gerade aus), da sonst bei aktiviertem RWI-Austausch (DHT-Transfer) und gleichzeitigem Crawlen nicht genuegend RWI-Cache vorhanden ist.
  • Ein RWI-Cache von 100.000 und brauchen mehr als 2 GB RAM fuer die JVM.
  • Zudem sollte die Speicherreservierung fuer die JVM nicht zu gross sein. 2 GB bei 6 GB Arbeitsspeicher mit gestartetem Firefox, Evolution, Pidgin, MySQL-Datenbank (kleine Einstellungen), APT-P2P und Lighttpd passt gerade rein. Bei 2.5 GB Reservierung hang ploetzlich die Node (Interface und Proxy reagierten nicht mehr) und es musste gekillt werden.

Geparkte Domains automatisch rausfiltern und sperren:
Ich habe ein kleines Shell-Script entworfen, dass bei sedo (einer der grossen Anbieter) geparkte Domains aus den Logbuechern von YaCy raussuchen kann. Ich werde es aber bei Zeiten noch um andere Anbieter erweitern. Wieso diese blockiert weden sollen, beschreibe ich weiter unten. Erstmal hier das Script (Public Domain, mir also egal, was ihr damit macht):

#!/bin/sh

BLACKLIST="url.default.black"
WHITELIST="de ch net com org ru pl us com.au info"
SILENT=`echo ${1} | grep "s"`
CRON=`echo ${1} | grep "c"`

debug_msg() {
	if test "${SILENT}" = ""; then
		echo "${0}: ${1}"
	fi
}

output() {
	if test "${CRON}" = ""; then
		echo "${0}: ${1}"
	fi
}

block_domain() {
	debug_msg "Processing entry ${1} ..."
	WHITELIST_CHECK=`echo "${WHITELIST}" | grep "${1}"`
	if test "${WHITELIST_CHECK}" != ""; then
		debug_msg "Entry ${1} is white-listed!"
		return
	fi

	LOOKUP=`grep "${1}" DATA/LISTS/${BLACKLIST}`
	if test "${LOOKUP}" = ""; then
		echo "${0}: Black-listing domain ${1}..."
		echo "${1}/.*" >> "DATA/LISTS/${BLACKLIST}"
	elif test "${SILENT}" = ""; then
		echo "${0}: Domain ${1} is already black-listed."
	fi
}

fix_missing_www() {
	output "Fixing missing www..."
	PREPARE=`cat parking.log | cut -d "/" -f 3- | cut -d "." -f 1-`
	
	for entry in "${PREPARE}"; do
		TEST=`echo "${entry}" | cut -d "." -f 1`
		if test "${TEST}" != "www"; then
			#echo "${0}: Entry ${entry} has no www. Adding it for compatiblity..."
			grep -v "${entry}" parking.log > temp.log
			entry="www.${entry}"
			echo "http://${entry}">>temp.log
			mv temp.log parking.log
		fi
	done
}

cd `dirname ${0}`
output "Analysing logfiles..."
grep "http://" DATA/LOG/yacy*.log | grep "/parking.php?ses=" | cut -d " " -f 10 | grep "http" > parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/parking.php?ses=" | cut -d " " -f 11 | grep "http" >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/parking.php?ses=" | cut -d " " -f 12 | grep "http" | cut -d ":" -f 2- >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/info/" | grep "\.html?ses=" | cut -d " " -f 10 | grep "http" >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/info/" | grep "\.html?ses=" | cut -d " " -f 11 | grep "http" >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/info/" | grep "\.html?ses=" | cut -d " " -f 12 | grep "http" | cut -d ":" -f 2- >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/?epl=0" | cut -d " " -f 10 | grep "http" >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/?epl=0" | cut -d " " -f 11 | grep "http" >> parking.log
grep "http://" DATA/LOG/yacy*.log | grep "/?epl=0" | cut -d " " -f 12 | grep "http" | cut -d ":" -f 2- >> parking.log

fix_missing_www

LIST=`cat parking.log | cut -d "/" -f 3 | cut -d "." -f 2-4 | grep -v "html?ses=" | sort --unique`
rm -f parking.log

for entry in "${LIST}"; do
	block_domain "${entry}"
done
output "All done."

Dieses kann z.B. bequem per Cronjob ausgefuehrt werden:

*/10 * * * * $HOME/yacy/parking.sh sc
Bitte dann $HOME und parking.sh gegen den gewaehlten Usernamen (wo YaCy installiert ist) und Scriptname austauschen! Die Parameter "s" und "c" sind nur zusammen oder einzelnt eingebbar.

Wieso geparkte Domains schlecht sind und weshalb sie gesperrt werden sollten:

  • Generell sollte man mit Sperren von Inhalten im Internet vorsichtig umgehen, da dies durchaus als Zensur gelten kann.
  • Zudem sollte immer der Nutzen dran abgewogen werden.
  • Domainparker (oder noch schlimmer die Domain-Haie) wollen mit ihren geparkten Domains aber eigentlich keine wirklichen Informationen bereitstellen, sondern die Besucher ihrer Seite (die per Suchmaschinen oder Verlinkungen wegen alten Inhalten reinkommen) auf ein gefaktes Suchportal locken, wo sie fuer jeden Klick oder Eingabe von Suchbegriffen Geld bekommen.
  • Dagegen ist prinzipiell nichts einzuwenden - jeder braucht heutzutage Geld.
  • Allerdings wird das in letzter Zeit stark uebertrieben. Der Domainparker parkt tonnenweise Domains it relevanten Suchbegriffen um noch mehr Besucher abzufischen.
  • Die eigentlichen Webseiten werden dabei immer weiter in den Hintergrund gedraengt, also aus den ersten Seiten der Suchergebnissen von "echten" Suchmaschinen verdraengt.
  • Der Domainparker ist hier also der Niesnutzer und die Besucher von solchen Webseiten werden nur enttaeuscht, ueber Inhalte zu stoplern, die keine sind, sondern nur der Suchmaschinenoptimierung gelten.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Gemeinschafts-Portal
Navigation
Werkzeuge