2012-06-12 1 views
1

Nous avons une application complexe qui sert les flux AJAX JSON (en utilisant ADO pour saisir les données) en utilisant de courtes servlets ASP. Une session donnée peut déclencher de 10 à 20 de ces demandes simultanément. Nous avons rencontré un problème de performance significatif plus tôt que nous ne le prévoyions en termes de charge. (Le serveur est un dual-XEON, RAID 5, 4gb, etc.) Nous nous sommes aperçus que le chiffre "Demandes d'exécution" était perpétuellement bloqué à 1. Jamais plus haut. La recherche indique que les nombres de 20-50 ne sont pas rares. Les demandes placées en file d'attente oscillent entre 10 et 20 et les temps d'attente grimpent également.ASP 'Requêtes classiques d'exécution' n'excédant jamais 1

Nous avons joué avec ASPProcessorThreadMax réglé à 40 par défaut de 25 sans effet. Il semble être seulement capable de travailler une seule demande à la fois, ce qui, inutile de le dire, ne fonctionnera pas. Je ne trouve rien qui décrive ce problème particulier. L'aide d'Anny est grandement appréciée.

+0

voir ce fil http://stackoverflow.com/questions/6123453/problem-with-ihttpasynchandler-and-asp-net-requests-executing-counter cela fait-il une différence si vos demandes sont synchrones ou asynchrones? aussi si vous remplacez l'ADO avec quelques données fixes, le problème existe-t-il toujours? – peter

+0

Traitez-vous les variables de session? voir ce fil http://stackoverflow.com/questions/2326817/asp-net-mvc-and-ajax-concurrent-requests – peter

+0

Pourquoi avez-vous inclus la balise asp.net pour un problème d'asp-classic? Les deux commentaires jusqu'à présent pointent vers des réponses ASP.NET qui sont probablement des indices mais qui ne sont pas définitifs. – AnthonyWJones

Répondre

0

L'objet Session ASP est contraint à un STA (Single Threaded Apartment). Par conséquent, les demandes de scripts ASP pour la même session ne peuvent être traitées que de manière séquentielle.

Une autre raison pour laquelle vous ne pouvez voir qu'un seul script ASP s'exécuter même sur plusieurs sessions est l'endroit où le débogage est activé pour ASP. Cela provoque le traitement ASP à ignorer ASPProcessorThreadMax et prétendre qu'il a été défini à 1.

Pour éliminer le problème, assurez-vous que le débogage n'est pas activé et désactivez «Activer l'état de session». Si vous utilisez l'objet Session dans votre code, vous devrez trouver une alternative, comme l'état sauvegardé par DB.

Cependant, combien de sessions simultanées actives attendez-vous dans la production en direct? Peut-être que l'expérience utilisateur globale ne sera pas vraiment impactée par la sérialisation des demandes par session.

Questions connexes