RAM, CPU, 디스크 등이 많은 64 비트 Windows Server 2008 R2 Enterprise 컴퓨터에서 IIS 7.5에서 실행되는 ASP.NET 4.0 응용 프로그램이 있습니다.
웹 요청이있을 때마다 ASP.NET 응용 프로그램은 동일한 컴퓨터에서 실행되는 백엔드 웹 서비스 (원시 소켓을 통해)에 연결합니다.
문제 : 백엔드 웹 서비스에 대한 동시 연결 수를 제한하는 것이있는 것 같습니다 . 의심스럽게도 동시 연결 수가 16 개를 넘어 섰습니다.
웹 서비스 요청을 많이하는 ASP.NET 앱을 수용하기 위해 IIS 설정을 조정하는 방법을 설명하는 Microsoft의 주요 기사를 찾았습니다. http://support.microsoft.com/?id=821268#tocHeadRef
나는 기사의 추천을 따랐지만 여전히 운이 없다. 특히 흥미로운 설정은 설정입니다 maxconnection
. 심지어 999까지 올렸습니다.
연결을 제한 할 수있는 다른 아이디어가 있습니까?
참고 : IIS를 혼합에서 제외하고 클라이언트가 백엔드 웹 서비스에 직접 연결하도록하면 필요한만큼의 연결이 행복하게 열리므로 백엔드가 병목 현상이 아니라고 확신합니다. IIS / ASP.NET-land에 있어야합니다.
다음 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>