我有一个在64位Windows Server 2008 R2 Enterprise计算机上的IIS 7.5上运行的ASP.NET 4.0应用程序,其中包含大量的RAM,CPU,磁盘等。
对于每个Web请求,ASP.NET应用程序都将连接到后端Web服务(通过原始套接字),该后端Web服务在同一台计算机上运行。
问题:似乎有一些限制同时连接到后端Web服务的数量。令人怀疑的是,并发连接数已达到16。
我从Microsoft找到了这篇关键文章,解释了如何调整IIS的设置以适应发出大量Web服务请求的ASP.NET应用程序:http : //support.microsoft.com/?id=821268#tocHeadRef
我遵循了本文的建议,但还是没有运气。特别有趣的maxconnection
设置是设置,我什至提高到了999。
还有其他想法可能会限制连接吗?
注意:当我不再使用IIS并让客户端直接连接到后端Web服务时,它将很高兴地打开所需数量的连接,因此,我很肯定后端不是瓶颈。它一定是IIS / ASP.NET领域中的东西。
这是machine.config
我确定应用程序正在读取的相关部分(已通过验证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>