HttpWebRequest für Paralellisierung sinnvoll?

26/09/2009 - 23:48 von Patrick Trübe | Report spam
Hallo NG!

Ich sitze gerade an einem Projekt welches sich mit der parallelen
Verarbeitung bzw. Auswertung mehrerer HTML-Seiten beschàftigt. Mehr als
proof of concept gedacht als ernst gemeint und um nicht ganz aus der
Coding-Übung zu kommen.
Bisher war alles singlethreaded. Nun wollte ich das Ganze auf MT umstellen
um mal die Paralellisierbarkeit abzustecken und mich mit dem Thema zu
beschàftigen.
Da es sich um eine Konsolenanwendung handelt, ist das ganze auch von Seiten
der GUI nicht sonderlich schwierig. Die Seiten werden mittels HttpWebRequest
geladen. Die einzelnen Methodenaufrufe für die Methode, welche den Header
vorbereitet und dann das HTML analysiert usw. erfolgen per BeginInvoke
asynchron, das "laden" der Daten erfolgt dann synchron (über .GetResponse),
weil ja durch BeginInvoke sowieso ein neuer Thread erstellt wird (?).
Testmaschiene ist ein Quadcore an 16000er DSL.
Trotz alledem skaliert die Anwendung àußerst schlecht mit steigender
Threadzahl. Es ist mir ziemlich unverstàndlich wieso! Meine Vermutung wàre,
dass innerhalb von HttpWebRequest irgendwo shared Variablen gelockt werden
und es deshalb mehr tröpfelt als das es strömt. Die gleichen Arbeitsauftràge
gehen mit zwei unabhàngig gestarteten Anwendungen (singlethreaded) deutlich
schneller als mit zwei Threads. Ein paar kleinere q'n'd Performance-Tests
lassen drauf schließen, dass das hauptsàchlich an den Requests liegt. Es
scheint mir, als würde kein anderer Request gestartet, bis die Response des
Vorhergegenden da ist.
Hàtte jemand einen Tipp für mich?

Beste Grüße aus dem Harzvorland
Patrick Trübe
 

Lesen sie die antworten

#1 Kerem Gümrükcü
27/09/2009 - 02:23 | Warnen spam
Hallo Patrick,

das die Sache langsam von statten geht, kann unterschiedliche
Gründe haben, die Du hier einsehen kannst:

[Understanding System.Net Connection
Management and ServicepointManager]
http://blogs.msdn.com/adarshk/articles/345411.aspx

[ServicePoint.ConnectionLimit Propert]
http://msdn.microsoft.com/en-us/lib...limit.aspx

[Windows Vista tcpip.sys Connection Limit
Patch for Event ID 4226]
http://www.mydigitallife.info/2007/...t-id-4226/

Für XP hier:

[Windows XP SP2 tcpip.sys connection limit patch]
http://www.speedguide.net/read_articles.php?id97


Die Kombination aus unterschiedlichen "Gegebenheiten"
schlàgt sicherlich hier stark auf die Performance. Mit deinen
Shared Resourcen lagst Du an sich auch schon richtig,...

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen