J'essaie d'écrire un client de test de charge pour un serveur de service Web que j'ai écrit. Le client interagit avec le serveur en utilisant HTTP. Les clients réguliers pour mon service doivent utiliser HTTP keep alive (en utilisant HTTP 1.1 et ne définissant pas la valeur KeepAlive sur false dans HttpWebRequest) afin que leurs connexions TCP restent pour les requêtes HTTP ultérieures. Chaque client effectue une requête/réponse synchrone au début pour s'authentifier, puis passe aux requêtes asynchrones.HttpWebRequest s'arrête lorsqu'il y a plusieurs demandes de maintien en vie
Dans mon test de charge, je souhaite que des centaines de clients simulés envoient tous des demandes au même serveur. Mais si je ne mets pas KeepAlive à false dans mes HttpWebRequests, TOUS les clients simulés essaieront apparemment d'utiliser la connexion SAME TCP, et j'obtiens des décrochages dans mon test de charge alors qu'ils essaient lentement de partager la connexion pour faire leur synchrone initiale. demandes Je ne crois pas que la première requête asynchrone corrigera cela, je l'ai déjà essayé et j'ai obtenu le même décrochage dans l'appel BeginGetResponse() (qui est censé revenir immédiatement mais pas), parce qu'il attend de se mettre sur la connexion partagée je pense.
Y at-il un moyen de s'assurer que chacun de mes "clients" dans mon test de charge obtient sa propre connexion TCP, qu'ils réutiliseront pour de futures requêtes HttpWebRequests?
Quelqu'un a posé une question similaire ici: HttpWebRequest timeout in 3.5sp1 qu'ils résolus en utilisant KeepAlive = false, mais ce n'est pas assez bon pour moi parce que ce serveur va avoir un volume énorme et je veux garder le transfert de données réseau au minimum.
Il est recommandé qu'une application client n'utilise pas plus de 2 connexions persistantes à la fois (http: //www.faqs.org/rfcs/rfc2616.html) – Tinku
La limite de connexion n'a pas d'importance, je ne la frappe pas. Le problème est que la même connexion TCP est réutilisée encore et encore et que je n'ai pas assez de contrôle sur la connexion TCP utilisée par une requête HTTP spécifique. Je pense que c'est impossible, je vais essayer d'utiliser des processus séparés. – evilfred
Essayez de compiler avec .net 1.1 c'est un problème avec 2.0 – Tinku