Ich muss etwa 200 HTTP-Anfragen parallel zu verschiedenen Servern senden und Antwort erhalten. Ich verwende 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 erhalten, 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 ob nur 2-3 Anforderungen parallel ausgeführt werden, aber das Timeout beginnt unmittelbar nach der Erstellung des WebRequest-Objekts. Ich versuchte Set DefaultConnectionLimit
und MaxServicePoints
Werte, 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.Mehrere HTTP-Anfrage in C#
Code-Beispiel, das ich Test verwenden:
ArrayList a = new ArrayList(150);
for (i = 50; i < 250; i++)
{
a.Add("http://207.242.7." + i.ToString() + "/");
}
for (i = 0; i < a.Count; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(performRequest));
t.Start(a[i]);
}
static void performRequest(object ip)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create((stirng)ip);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
}
Сan jemand jemals solch ein Problem aufgetreten? Vielen Dank für Anregungen.
Ich habe ähnliches Problem selbst, scheint es, dass WebRequest.Create() die gleiche TCP-Verbindung aus irgendeinem Grund wiederverwenden. Ich frage mich, ob Sie herausgefunden haben, was die Antwort auf Ihre Frage ist? – ala