Ho un'applicazione ASP.NET 4.0 in esecuzione su IIS 7.5 su una macchina Windows Server 2008 R2 Enterprise a 64 bit con gocce di RAM, CPU, disco, ecc.
Con ogni richiesta Web, l'applicazione ASP.NET effettua una connessione a un servizio Web back-end (tramite socket raw), che è in esecuzione sulla stessa macchina.
Problema: sembra esserci qualcosa che limita il numero di connessioni simultanee al servizio web di backend. Sospettosamente, il numero di connessioni simultanee sta raggiungendo 16.
Ho trovato questo articolo chiave di Microsoft che spiega come modificare le impostazioni di IIS per soddisfare le app ASP.NET che effettuano molte richieste di servizi Web: http://support.microsoft.com/?id=821268#tocHeadRef
Ho seguito le raccomandazioni dell'articolo, ma ancora senza fortuna. L'ambientazione particolarmente interessante è l' maxconnection
ambientazione, che ho addirittura portato a 999.
Qualche idea su cos'altro potrebbe limitare le connessioni?
Nota: quando escludo IIS dal mix e faccio in modo che i client si colleghino direttamente al servizio web di backend, aprirà felicemente tutte le connessioni di cui ho bisogno, quindi sono sicuro che il backend non sia il collo di bottiglia. Deve essere qualcosa in IIS / ASP.NET-land.
Ecco la sezione pertinente di machine.config
cui sono sicuro viene letta dall'applicazione (verificata con 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>