J'ai une application ASP.NET 4.0 fonctionnant sur IIS 7.5 sur une machine Windows Server 2008 R2 Enterprise 64 bits avec des tas de RAM, CPU, disque, etc.
Avec chaque requête Web, l'application ASP.NET établit une connexion à un service Web de backend (via des sockets bruts), qui s'exécute sur la même machine.
Problème: il semble y avoir quelque chose qui limite le nombre de connexions simultanées au service Web principal. De manière suspecte, le nombre de connexions simultanées atteint 16.
J'ai trouvé cet article clé de Microsoft expliquant comment modifier les paramètres d'IIS pour accueillir les applications ASP.NET qui font de nombreuses demandes de service Web: http://support.microsoft.com/?id=821268#tocHeadRef
J'ai suivi les recommandations de l'article, mais toujours pas de chance. Le réglage qui est particulièrement intéressant est le maxconnection
réglage, que j'ai même grimpé à 999.
Des idées sur quoi d' autre pourrait être la limitation des connexions?
Remarque: lorsque je coupe IIS du mix et que les clients se connectent directement au service Web backend, il ouvrira avec plaisir autant de connexions que nécessaire, donc je suis sûr que le backend n'est pas le goulot d'étranglement. Ce doit être quelque chose dans IIS / ASP.NET-land.
Voici la section pertinente du machine.config
qui, j'en suis sûr, est en cours de lecture par l'application (vérifiée 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>