Select the product you need help with
Contention, une dégradation des performances et blocages lorsque vous effectuez des appels aux services Web à partir d'une application ASP.NETNuméro d'article: 821268 - Voir les produits auxquels s'applique cet article SommaireSymptômesLorsque vous effectuez des appels aux services Web à partir d'une application Microsoft ASP.NET, vous pouvez rencontrer des conflits, une dégradation des performances et des blocages. Les clients peuvent signaler que les demandes de cesser de répondre (ou « se bloquer ») ou longue à exécuter. Si un blocage est suspects, le processus de travail peut être recyclé. Vous pouvez recevoir des messages suivants dans le journal des événements application.
« System.InvalidOperationException :
Se sont pas suffisamment de threads libres dans l'objet ThreadPool pour terminer le
opération". « HttpException (0 x 80004005): délai de la demande
sorti ». CauseCe problème peut se produire car ASP.NET limite le nombre
des threads de travail et les threads de port de terminaison qu'un appel peut utiliser pour exécuter
demandes. En règle générale, un appel à un service Web utilise un thread de travail pour exécuter le code qui envoie la demande et un thread de port de terminaison pour recevoir le rappel du service Web. Toutefois, si la demande est redirigée ou requiert une authentification, l'appel peut utiliser jusqu'à deux threads de travail et deux threads de port de terminaison. Par conséquent, vous pouvez épuiser le pool de threads managé lorsque plusieurs appels au service Web se produisent en même temps. Par exemple, supposons que le pool de threads est limité à 10 threads de travail et que toutes les 10 threads de travail exécutent du code qui est en attente d'un rappel à exécuter. Le rappel ne peut jamais exécuter, car tous les éléments de travail qui sont en attente pour le pool de threads sont bloqués jusqu'à ce qu'un thread devient disponible. Une autre source potentielle de conflit est le paramètre maxconnection l'espace de noms System.Net utilise pour limiter le nombre de connexions. En règle générale, Cette limite fonctionne comme prévu. Toutefois, si de nombreuses applications tentent d'apporter de nombreuses demandes en une seule adresse IP en même temps, threads devront peut-être attendre une connexion disponible. RésolutionPour résoudre ces problèmes, vous pouvez régler les paramètres suivants dans le fichier Machine.config pour mieux adaptés à votre situation :
maxWorkerThreads et maxIoThreadsASP.NET utilise les paramètres de configuration suivants Pour limiter le nombre maximal de threads de travail et de threads d'achèvement utilisé :2 * maxWorkerThreads minFreeThreads et minLocalRequestFreeThreadsASP.NET contient également la configuration suivante paramètres qui déterminent le nombre de threads de travail et de fin des threads de port doit être disponible pour le lancement d'une demande distante ou une demande locale : (maxWorkerThreads*nombre d'unités centrales)-minFreeThreads Remarque : Le paramètre minFreeThreads et minLocalRequestFreeThreads ne sont pas implicitement multipliés par le nombre de processeurs.minWorkerThreadsDepuis ASP.NET 1.0 Service Pack 3 et ASP.NET 1.1, ASP.NET contient également le paramètre de configuration suivant qui détermine comment nombre de threads de travail peut se faire immédiatement disponible pour une télécommande de service demande.maxconnectionLe paramètre maxconnection détermine le nombre de connexions peut être apportée à un adresse IP spécifique. Le paramètre s'affiche comme suit :executionTimeoutASP.NET utilise les paramètres de configuration suivants pour limiter la durée d'exécution de requête :Remarque : Si vous augmentez la valeur du paramètre executionTimeout , vous devrez peut-être également modifier le processModel responseDeadlockInterval valeur du paramètre. RecommandationsLes paramètres qui sont recommandés dans cette section peut ne pas fonctionnent pour toutes les applications. Toutefois, les informations supplémentaires suivantes peuvent vous aider à effectuer les réglages appropriés.If vous effectuez un appel de service Web à une adresse IP unique à partir de chaque page ASPX, Microsoft vous recommande d'utiliser les paramètres de configuration suivants :
Remarque : Lorsque vous utilisez cette configuration, vous pouvez exécuter un maximum de 12 Demandes ASP.NET par UC en même temps, car 100-88 = 12. Par conséquent, au moins 88 *N travailleur threads et 88 *N threads de port de terminaison sont disponible pour d'autres utilisations (par exemple, en ce qui concerne les rappels de service Web). Par exemple, vous disposez d'un serveur avec quatre processeurs et hyperthreading activé. En fonction de ces formules, utilisez les valeurs suivantes pour le paramètres de configuration qui sont mentionnées dans cet article. En outre, lorsque vous utilisez cette configuration, 12 connexions sont disponibles par UC par adresse IP pour chaque domaine d'application. Par conséquent, dans les éléments suivants scénario, très peu de conflit se produit lorsque les demandes sont en attente de connexions et le pool de threads n'est pas épuisé :
Statut Cela
comportement est voulu par la conception. Plus d'informationsSi vous rencontrez une baisse des performances et la contention sur IIS 7.0 et ASP.NET, consultez les blogs de Microsoft suivants : Utilisation de Thread ASP.NET sur IIS 7.5, IIS 7.0 et IIS 6.0
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
Blocage de ASP.net dans IIS 7.0
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
RéférencesPour plus d'informations, consultez le site Web Microsoft Developer Network (MSDN) suivant : Amélioration des performances ASP.NET
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
PropriétésNuméro d'article: 821268 - Dernière mise à jour: mercredi 6 février 2013 - Version: 1.0 Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
Traduction automatique IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique. La version anglaise de cet article est la suivante: 821268
(http://support.microsoft.com/kb/821268/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT. | Traductions disponibles
|




Retour au début








