ฉันมีแอปพลิเคชัน ASP.NET 4.0 ที่ทำงานบน IIS 7.5 บนเครื่อง Windows Server 2008 R2 Enterprise แบบ 64 บิตพร้อม RAM, CPU, ดิสก์และอื่น ๆ
ทุกคำขอของเว็บแอปพลิเคชัน ASP.NET จะทำการเชื่อมต่อกับบริการเว็บแบ็กเอนด์ (ผ่านซ็อกเก็ตดิบ) ซึ่งทำงานบนเครื่องเดียวกัน
ปัญหา:ดูเหมือนจะมีบางอย่าง จำกัด # ของการเชื่อมต่อพร้อมกันไปยังบริการเว็บแบ็กเอนด์ น่าสงสัยว่าจำนวนการเชื่อมต่อพร้อมกันจะเพิ่มขึ้นที่ 16
ฉันพบบทความสำคัญนี้จาก Microsoft ที่อธิบายวิธีปรับแต่งการตั้งค่าของ IIS เพื่อรองรับแอป ASP.NET ที่ร้องขอบริการเว็บจำนวนมาก: 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>