sco*_*tus 3 iis performance iis-7 asp.net
ASP.net 2.0 应用程序 .net 2.0 框架 IIS7
我看到一个大的“请求”队列出现在“工作进程”选项下。记录的状态似乎是 Authenticate Request 和 Execute Request Handles 比什么都重要。
我已经修改了 C:\Windows\Microsoft.NET\Framework64\v2.0.50727(32 位路径和 64 位路径)中的 aspnet.config 以包括:
maxConcurrentRequestsPerCPU="50000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="50000"
Run Code Online (Sandbox Code Playgroud)
我已经修改了 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG(32 位和 64 位路径)中的 machine.config 以包括:
autoConfig="true"
maxIoThreads="100"
maxWorkerThreads="100"
minIoThreads="50"
minWorkerThreads="50"
minFreeThreads="176"
minLocalRequestFreeThreads="152"
Run Code Online (Sandbox Code Playgroud)
我仍然明白这个问题。
该问题表现为工作进程队列中有大量进程。
发生此问题时,网站的当前连接数显示为 500。我认为我没有看到超过 500 个并发连接而不发生这个问题。
Web 应用程序随着请求块而变慢。
随着负载在两个池之间分布,刷新应用程序池会解决一段时间(如预期)。
有问题的应用程序池 FIXED REQUEST 已设置为在 50000 时刷新。
感谢您的任何帮助。斯科特
快速编辑说嗯,我的开发人员告诉我该项目是用 .net 3.5 框架构建的。看着
C:\Windows\Microsoft.NET\Framework64\v3.5
似乎没有 ASPNET.CONFIG 或 MACHINE.CONFIG .... 是否有 3.5 等价物?
经过一番搜索,显然 3.5 使用了 3.5 缺少的 2.0 框架文件。
那么回到最初的问题,我的瓶颈在哪里?
IIS 优化和性能调优是一个相当广泛的话题,您的瓶颈可能在几个地方。
首先,您可以使用Performance Monitor更好地确定瓶颈是什么。
根据您在那里找到的内容,您可以继续尝试以下 IIS 性能调整选项:
默认情况下,web.config 文件中连接字符串的最大池大小为 100,因此请尝试指定更高的值,例如"Max Pool Size=200; Min Pool Size=10; Connect Timeout=45;".
例子:
<add name="SiteSqlServer" connectionString="Server=mydomain.com;Initial Catalog=myDB;User ID=DB;Password=myDB;Max Pool Size=100;Min Pool Size=10;Connect Timeout=45;" providerName="System.Data.SqlClient" />
位置:C:\Windows\Microsoft.NET\Framework\v2.0.50727和C:\Windows\Microsoft.NET\Framework64\v2.0.50727
例子:
<system.web>
<applicationPool maxConcurrentRequestsPerCPU="5000" <!-- Default is 12 -->
maxConcurrentThreadsPerCPU="0" <!-- Default is 0 -->
requestQueueLimit="5000" <!-- Default is 5000 -->/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
位置: C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG和C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG
例子:
<processModel
enable="true"
requestQueueLimit="5000" <!-- Adjust if necessary. Default 5000 -->
restartQueueLimit="10" <!-- Adjust if necessary. Default 10 -->
memoryLimit="60" <!-- Adjust if necessary. Lower for memory leaks. -->
maxWorkerThreads="100" <!-- Default 20 -->
maxIoThreads="100" <!-- Default 20 -->
minWorkerThreads="40" <!-- Default 1 -->
minIoThreads="30" <!-- Default 1 -->
/>
Run Code Online (Sandbox Code Playgroud)
例子:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100" <!-- Default is 2 --> />
</connectionManagement>
</system.net>
Run Code Online (Sandbox Code Playgroud)