Qu'est-ce que la limitation du nombre de connexions simultanées mon ASP.NET l'application peut faire pour un service web?

J'ai un ASP.NET 4.0 application fonctionnant sur IIS 7.5 sur une version 64 bits de Windows Server 2008 R2 Enterprise machine avec des masses de RAM, CPU, disque, etc.

Avec chaque requête web, la ASP.NET l'application établit une connexion à une interface de service web (via les sockets raw), qui est en cours d'exécution sur la même machine.

Problème: Il semble y avoir quelque chose de limiter le nombre de connexions simultanées sur le serveur de service web. Étrangement, le nombre de connexions simultanées est cadencé à 16.

J'ai trouvé cet article-clé à partir de Microsoft expliquant comment configurer IIS " paramètres pour accueillir ASP.NET les applications qui font beaucoup de demandes de service web: http://support.microsoft.com/?id=821268#tocHeadRef

J'ai suivi l'article de recommendatinos, mais toujours pas de chance. Le paramètre qui est particulièrement intéressant, c'est la maxconnection paramètre, j'ai même tombé à 999.

Toutes les idées que d'autre pourrait être la limitation de connexions?

Remarque: Quand je coupe IIS le mix et ont les clients de se connecter directement sur le serveur de service web, il se fera un plaisir d'ouvrir autant de connexions que j'ai besoin, donc je suis positif le backend n'est pas le goulot d'étranglement. Il doit être quelque chose dans IIS/ASP.NET-land.

Voici la section pertinente de la machine.config qui je suis sûr est d'être lu par l'application (vérifié avec appcmd.exe):

<system.web>
    <processModel autoConfig="false" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" />
    <httpRuntime minFreeThreads="176" minLocalRequestFreeThreads="152"/>

    <httpHandlers />

    <membership>
        <providers>
            <add name="AspNetSqlMembershipProvider"
                type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                applicationName="/"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="7"
                minRequiredNonalphanumericCharacters="1"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression="" />
        </providers>
    </membership>

    <profile>
        <providers>
            <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/"
                type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </profile>

    <roleManager>
        <providers>
            <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/"
                type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
            <add name="AspNetWindowsTokenRoleProvider" applicationName="/"
                type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </roleManager>
</system.web>
<system.net>
    <connectionManagement>
        <add address="*" maxconnection="999"/>
    </connectionManagement>
</system.net>
  • a un bon point ici - comment évaluez-vous le nombre de connexions simultanées?
  • Je mesure le nombre de connexions simultanées par l'exécution de TCPView sur le serveur pour voir combien de backend connexions sont faites par les processus de traitement IIS.
  • Sont les clients Web s'exécutant sur des machines indépendantes ou la même machine? (En vérifiant qu'il n'y a pas de client-côté de limitation de passe.)
  • Des machines séparées. 1 connexion client-serveur par machine. Aussi, nous savons qu'il n'y a pas de limitation de quelque part sur le réseau, car lorsque nous avons atteint le backend directement (ce qui se passe sur HTTP ainsi) nous n'allons pas dans le goulot d'étranglement.
  • Nous avons eu ce même problème avec une application console qui a appelé un webservice et nécessaire de faire beaucoup d'appels simultanés. Nous avons découvert l'application de console a été la limitation à 2 connexions. Le Paramétrage Du Système.Net.ServicePointManager.DefaultConnectionLimit = 1000; effacé la question, mais maintenant nous sommes en utilisant le même code sur un site, et je me demandais comment ce paramètre concerne les solutions parlé ici. Qui prend la priorité?
  • Rob, avez-vous jamais trouver une solution définitive à cette situation?
  • Nan 🙁
  • Ni la solution à l'aide de maxconnection="65535" ? Dans ASP.NET 4.5 nouvelles sections de configuration peut-être ?

InformationsquelleAutor Rob Sobers | 2011-10-21