Ich muss ungefähr 200 HTTP-Anfragen parallel zu verschiedenen Servern senden und eine Antwort erhalten.
Ich verwende die HttpWebRequest-Klasse in C #.
Aber ich sehe keine gute Zeit Verbesserung, wenn Anfragen parallel behandelt werden.
Zum Beispiel, wenn eine Anfrage 3 Sekunden braucht, um eine Antwort zu bekommen, 2 Anfragen parallel - 6 Sekunden, 3 Anfragen - 8 Sekunden, 4 Anfragen - 11 Sekunden ...
Es ist nicht gut, ich hoffe, dass es die beste Zeit geben sollte, etwa 10 Sekunden für 200 Anfragen.
Es sieht so aus, als würden nur 2-3 Anforderungen parallel ausgeführt, aber das Zeitlimit beginnt unmittelbar nach der Erstellung des WebRequest-Objekts.
Ich habe versucht, DefaultConnectionLimit
und MaxServicePoints
-Werte zu setzen, aber ID hat nicht geholfen. Wie ich diese Parameter für die Anzahl der Anfragen an eine Seite parallel verstehe. Ich brauche Anfragen an verschiedene Seiten.
Codebeispiel, das ich zum Testen verwende:
%Vor%Ist jemand jemals auf ein solches Problem gestoßen? Vielen Dank für Anregungen.
Statt Ihre eigenen Threads des Startens versuchen, die asynchronen Methoden des HttpWebRequest verwenden wie HttpWebRequest.BeginGetResponse und HttpWebRequest.BeginGetRequestStream .
Dies könnte helfen - Ссылка
Schlägt vor, dass die Anzahl der erlaubten TCP-Verbindungen begrenzt ist, Sie aber das Limit erhöhen können
Dies ist der Code der Android-Anwendung der sendenden Anfrage. Wie können wir den oberen Code wie verwenden? params.add (new BasicNameValuePair ("Schlüssel", "Wert");
HttpPost request = new HttpPost ();
Liste params = new ArrayList ();
params.add (new BasicNameValuePair ("key", "value"); // Wie können wir den Wert in diesem Format Format
gebenpost.setEntity (neue UrlEncodedFormEntity (params));
Ссылка