RAM、CPU、ディスクなどを備えた64ビットのWindows Server 2008 R2 EnterpriseマシンでIIS 7.5の上でASP.NET 4.0アプリケーションを実行しています。
すべてのWebリクエストで、ASP.NETアプリケーションは、同じマシン上で実行されているバックエンドWebサービス(生のソケットを介して)に接続します。
問題:バックエンドWebサービスへの同時接続数を制限するものがあるようです。疑わしいことに、同時接続数は16に達しています。
IISの設定を微調整して、多くのWebサービス要求を行うASP.NETアプリに対応する方法を説明している、Microsoftのこの重要な記事を見つけました。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>