org.apache.http kompletter Internetausfall

Rahmspinat

Aktives Mitglied
Hallo Leute,

Wenn ich mit folgenden Code viele abfragen hintereinander mache, fällt an meinem rechner das komplette internet aus und es geht gar nichts mehr. Bis ich das Programm dann irgendwann beende.

Java:
DefaultHttpClient httpclient  = null;
		HttpContext localContext = null;
		HttpResponse response = null;
		HttpHost target = null;
		HttpParams httpParams = new BasicHttpParams();
		HttpConnectionParams.setConnectionTimeout(httpParams, 15000);
		HttpProtocolParams.setUserAgent(httpParams, "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.13) Gecko/20101203 BRI/1 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)");
		try {
			httpclient  = new DefaultHttpClient();
			httpclient.setParams(httpParams);
		
			localContext = new BasicHttpContext();
			
			//Wenn die adresse ohne http:// übergeben wird, wird dieses vorgesetzt
			if(!address.contains("http://")) {
				address = "http://" + address;
			}
			
			HttpGet httpget = new HttpGet(address);
		
			response = httpclient.execute(httpget, localContext);
		
			target = (HttpHost) localContext.getAttribute(
			        ExecutionContext.HTTP_TARGET_HOST);
		
			String host = target.toString();
			return host;
		}catch(Exception ex) {
			System.err.println(ex.getMessage());
		} finally {
			httpclient  = null;
			localContext = null;
			response = null;
			target = null;
		}


Hat jemand eine Idee warum das so ist?
 
Das sind einbischen zuweing informationen die du uns gibst.

Was heist viele Abfragen in welchem Bereich befinden wir uns da?
Bekommst du von deinen Programm irgendeine Fehlermeldung? Wenn ja welche?
Was bedeutet dein Internet fällt aus? Wie zeigt sich dieser Ausfall?
 
Du hast nur eine bestimmte Bandbreite bei deinem Internetanschluß. Wahrscheinlich schöpfst du die mit deinen Anfragen voll aus, so das nichts mehr zusätzlich geht.
 
Hej Leute,

danke für eure Teilnahme an meinem Thema 😉

Ziel sind eigentlich schon mehrere tausend domains, allerdings stoppt bzw stockt er schon nach 30 - 50 domains. (stockt meint, er versucht immer weiter zu überprüfen weil der Timeout ja irgendwann die nicht vorhandene Connection beendet, es kommt halt dann leider nicht zu dem gewünschten ergebnis)

Ich bekomme nur die Fehlermeldung dass die die ganze Sache fehlgeschlagen ist. Die genaue Fehlermeldung hab ich jetzt nicht, kann die derzeit leider auch nicht nochmal erzeugen, weil gerade etwas anderes läuft.

Der Ausfall zeigt sich indem das internet komplett aus ist. Ich kann nicht mehr surfen, mein Skype disconnectet alles aus bis ich das Programm beende.


Das es an der Bandbreite liegt kann eigentlich nicht sein.
Ich habe einfach mal einen delay von einer sekunde zwischen jede Abfrage eingebaut. Leider hat das nichts gebracht.

Jetzt mach ich "im Prinzip" die selbe Abfrage mit HtmlUnit. Damit läufts super. Allerdings hab ich das gefühl dass die ganze sache auch einiges langsamer ist. Deshalb wollte ich eigentlich den ebend geposteten Code verwenden.

Ich hatte sowas ähnliches schonmal bei einem anderen Programm.

Wenn ein Kollege das benutzt hat, ist irgendwann sein internet ausgefallen. Wenn ich das genutzt habe ist es absolut fehlerfrei gelaufen.

Obs an der Netwerkkarte liegen kann?
Kann doch aber nicht sein das meine paar anfragen so eine Last erzeugen, zumal es ja mit htmlUnit funktioniert.

Ideen?
 
Ich kenne mich mit apache httpClient nicht aus. Aber es könnte sein, dass irgendwo in deinem Programm der Socket der zur Verbindung gebraucht wird nicht richtig geschlossen wird und deinen netzwerkarte vl irgend wie nach 50 offenen Verbindungen keine weitere mehr zu lässt. Das ist aber nur geraten und kann auch ein totaler Schwachsinn sein.
 
Ich kenne mich mit apache httpClient nicht aus. Aber es könnte sein, dass irgendwo in deinem Programm der Socket der zur Verbindung gebraucht wird nicht richtig geschlossen wird und deinen netzwerkarte vl irgend wie nach 50 offenen Verbindungen keine weitere mehr zu lässt. Das ist aber nur geraten und kann auch ein totaler Schwachsinn sein.


Sowas ungefähr hab ich mir auch schon gedacht. Ich habe versucht irgenwie die Verbindung zu schließen. Hab schon wie verrückt gegoogled und nix gefunden. Scheint so als ob er das automatisch Handled.
 
... ein paar tausend domains ...

bitte WAS ... was hast du denn bitte damit vor ? ... wenn du sowas geschrieben hättest wie : ein paar tausend aufrufe der selben domain ... das hätte noch irgendwie sinn ergeben ... aber nunja ...

was das connection-management angeht : ich kenne apache-commons auch nicht *will ich auch garnicht ... wenn ich was mit HTTP zu tun hab dann frimel ich mir ganz gemütlich alles selbst zusammen ... sparrt sogar resourcen und bringt mehr performance* aber du solltest wirklich versuchen die aktuelle verbindung vollständig zu beenden bevor du eine neue aufbaust

noch was zu deinen paar tausend domains : schon mal an die tatsache gedacht das die auch alle erstmal aufgelöst werden müssen ? ... das kann ... je nachdem wo der record liegt ... ne ganze weile dauern *am längsten wenn der nächste bekannte ort erst einer der 13 root-dns-server ist und dazwischen keiner die adresse auflösen kann und nur an den nächst höheren deligiert*
das alleine hier schon timeouts auftreten können wird selten beachtet

und was das wohl größte problem der meisten main-stream-user angeht : microsoft blockiert seit XP SP2 die maximal gleichzeitig möglichen verbindungen auf 10 ... vllt hattest du mal n tool was die etwas erhöht hat ... aber ich glaub kaum das bei dir die sperre ganz aufgehoben ist ...
einfache lösung : XP Anti-Spy ... *ja es läuft auch unter Vista und 7* ... da gibts irgendwo im menü n punkt der damit zu tun hat ... einfach ausführen und die sperre wird gelöst ... nun sind WIRKLICH alle 65000 ports GLEICHZEITIG nutzbar ... und das sogar UDP + TCP ... also 130000 Sockets ... was mit ner sperre die bei 10 oder 20 liegt natürlich nicht geht ... ob das der rechner schafft ist die zweite frage ... aber software-technisch ist damit die bremse gelöst *auf dem besten rechner an dem ich mal saß hab ich grade mal rund 30000 sockets gleichzeitig zum laufen bekommen ... lag aber daran das der rechner nicht mehr threads gleichzeitig schaffte*

wenn das alles nichts hilft ... dann ist dein problem dein provider ...
es gibt provider die ihren kunden eine solche sperre wieder einbauen ... unabhängig von den OS-configs ...
und wenn dein provider eben meint das er bei mehr als 50 verbindungen gleichzeitig n angriff vermutet und dir darauf hin deine verbindung provider-seitig beendet wirst du da nich viel machen können ...
*ich glaube bei meinem provider darf ich max 200 connections gleichzeitig offen haben ... danach liegt erstmal 10min alles lahm ...*
 

Neue Themen


Zurück
Oben