64-bit Windows Server 2008 R2 Enterprise makinesinde IIS 7.5'in üzerinde RAM, CPU, disk vb. İle çalışan bir ASP.NET 4.0 uygulamam var.
Her web isteğinde, ASP.NET uygulaması aynı makinede çalışan bir arka uç web hizmetine (ham soketler aracılığıyla) bağlantı kurar.
Sorun: Arka uç web hizmetine eşzamanlı bağlantı sayısını sınırlayan bir şey var gibi görünüyor. Şüpheli bir şekilde, eşzamanlı bağlantıların sayısı 16'ya yükseliyor.
Microsoft'tan çok sayıda web hizmeti isteği yapan ASP.NET uygulamalarını barındırmak için IIS ayarlarının nasıl değiştirileceğini açıklayan bu önemli makaleyi buldum: http://support.microsoft.com/?id=821268#tocHeadRef
Makalenin önerilerini takip ettim ama yine de şansım yok. Özellikle ilginç olan maxconnection
ayar, 999'a bile çıkardığım ayardır.
Bağlantıları kısıtlayan başka ne olabileceğine dair bir fikriniz var mı?
Not: IIS'yi karışımdan çıkardığımda ve istemcilerin doğrudan arka uç web hizmetine bağlanmasını sağladığımda, ihtiyacım olduğu kadar mutlu bir şekilde çok sayıda bağlantı açacak, bu nedenle arka ucun darboğaz olmadığından eminim. IIS / ASP.NET alanında bir şey olmalı.
İşte machine.config
uygulama tarafından okunduğundan emin olduğum ilgili bölüm (ile doğrulandı 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>