Je dois envoyer environ 200 requêtes HTTP en parallèle à différents serveurs et obtenir une réponse. J'utilise la classe HttpWebRequest en C#. Mais je ne vois pas de bon temps quand les requêtes sont traitées en parallèle. Par exemple si une requête nécessite 3sec pour obtenir réponse, 2 requête en parallèle - 6sec, 3 requêtes - 8 secs, 4 requêtes - 11sec ... Ce n'est pas bon, j'espère qu'il devrait y avoir le meilleur temps, environ 10 sec pour 200 demandes. Il semble que seulement 2-3 demandes s'exécutent en parallèle, mais le délai commence immédiatement après la création de l'objet WebRequest. J'ai essayé de définir DefaultConnectionLimit
et MaxServicePoints
valeurs, mais ID n'a pas aidé. Comme je comprends ces paramètres pour le nombre de demandes à un site en parallèle. J'ai besoin de demandes à différents sites.Demande HTTP multiple en C#
Exemple de code que j'utiliser pour tester:
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 quelqu'un a déjà rencontré un tel problème? Merci pour vos suggestions.
J'ai un problème similaire moi-même, il semble que WebRequest.Create() réutiliser la même connexion TCP pour une raison quelconque. Je me demande si vous avez découvert quelle est la réponse à votre question? – ala