2010-11-18 5 views
8

Nous avons une page qui fait une demande à un service Web 3'de partie. En cas de forte charge, ce temps de réponse s'étend de manière significative, cependant la 3ème partie rapporte que les temps de traitement restent constants. Les horaires montrent qu'à partir du moment où ils reçoivent une demande jusqu'au moment où ils l'envoient, ils sont toujours entre 1,5 et 2,0 secondes. Nous connaissons maintenant des temps d'attente de plus de 20 secondes. Ma compréhension d'ASP.NET est que chaque requête s'exécutera sur un thread de pool d'unités d'exécution IIS et fera la demande au retour et au processus du service de troisième partie. Donc je ne comprends pas vraiment ce qui pourrait bloquer de notre côté. Y a-t-il quelque chose qui me manque? Y a-t-il une limite de seuil au-delà de IIS qui bloque?Plusieurs appels au même blocage de service Web?

S'il me manque quelque chose, une recommandation de livre physique couvrant ce sujet serait également un ajout très apprécié à toute réponse.

+0

-t la page fait la demande du côté client ou côté serveur? –

+0

Il fait la demande à partir du côté du serveur, est-ce important? :) –

+0

+1 bonne question – PRR

Répondre

9

Les limites .NET imposent une limite de 2 requêtes Web simultanées à un seul hôte, comme suggéré par la spécification HTTP. Donc, dans votre cas, ce n'est pas le service Web qui a besoin de plus de temps pour s'exécuter, mais votre application qui retarde les requêtes pour rester dans cette contrainte.

Vous pouvez augmenter la limite pour le service Web en ajoutant cette touche à votre fichier de configuration:

<system.net> 
    <connectionManagement> 
     <!-- specific servers... --> 
     <add address="http://example.org" maxconnection="20" /> 

     <!-- ...or any server --> 
     <add address="*" maxconnection="8" /> 
    </connectionManagement> 
    </system.net> 
+0

ce ne serait le cas que si le même thread sur le côté serveur fait les demandes. S'il y a plusieurs utilisateurs, donc plusieurs sessions asp.net, ils seront chacun dans leur propre thread et n'auront pas ces limitations. droite? –

+0

@Mike, ce n'est pas vrai. La limite affecte tous les threads dans le processus, dans le cas d'ASP.NET même des applications différentes s'exécutant dans le même pool d'applications. – realMarkusSchmidt

+0

wow, je ne le savais pas. –

Questions connexes