ASP.NET请求排队导致网站崩溃。SQL后端,IIS6
我继承了一个需要帮助的有点复杂的系统(和问题) 我有一个带有以下规格的Web服务器:ASP.NET请求排队导致网站崩溃。SQL后端,IIS6,asp.net,sql,iis-6,Asp.net,Sql,Iis 6,我继承了一个需要帮助的有点复杂的系统(和问题) 我有一个带有以下规格的Web服务器: 硬件: 服务器2003 32位 IIS 6 8芯(16 w/超读) 12gb内存 ASP.NET网站 3个应用程序池,因此3个w3wp.exe实例正在运行 该系统服务于大量用户,在工作时间内带宽相当稳定,达到68000kbit/s 有时系统会“宕机”——网站速度非常慢,会产生大量电话。事情通常会慢60秒,但在时间长度上变化很大。有时只有几秒钟,有时3分钟或更长 我将我的应用程序池设置为回收大约600mb
- 硬件:
- 服务器2003 32位
- IIS 6
- 8芯(16 w/超读)
- 12gb内存
- ASP.NET网站
- 3个应用程序池,因此3个w3wp.exe实例正在运行
- 网络带宽大幅下降李>
- ASP.NET性能计数器中排队的请求增加李>
- 在w/请求队列中,上升的页面延迟会增加。(我使用了一个简单的ASP页面,该页面进行SQL调用,只说“系统处于活动状态”-此页面会监控延迟)
- 总体CPU使用率上升
- w3wp.exe的总内存消耗量增加李>
我想为我们的设置更改这些值。首先有几个问题: 1) 在进行更改后,需要重新启动什么才能使更改生效 2) 对于具有8个物理内核的系统,这些设置是如何设置的
maxconnection = 96
maxIoThreads = 100
maxWorkerThreads = 100
minFreeThreads = 704
minLocalRequestFreeThreads = 608
您正在谈论的设置是machine.config中
system.web
元素下元素的一部分。对于IIS6,以下各项适用:
通常,您只会发现autoConfig=“true”
而不是其他元素。自动配置根据您的机器配置设置值-根据推荐值(请参阅文章中的线程解释部分)进行调整,这些值与您提供的链接所看到的值相同。虽然已过时,但如果您想手动调整这些设置,我认为这是一个极好的资源 另一方面,对于您所服务的负载,我建议您做两件事(如果您还没有尝试过的话)
- 积极使用输出缓存-即使数据是动态的,缓存30-60秒也可以在负载上提供一定的提升
- 如果您怀疑某些请求占用了太多线程,请尝试将这些资源移动到不同的应用程序池下(您可以使用具有不同子域的不同网站,也可以使用不同的虚拟目录/应用程序并选择不同的应用程序池)
- 查看每个站点的IIS日志,查找以下内容:
- HTTP响应代码(5xx、4xx、3xx)
- 请求响应时间
- 查看Windows事件日志
- 应用程序池多久循环一次
- 应用程序错误等
- 按照@vinayc的建议验证processModel设置,以确保Preference没有“棘手”
- 安装时,它是一个非常好的工具,可以对内存和崩溃相关问题进行一些基本分析。
- 这还可以帮助您捕获内存快照,以便稍后进行诊断李>
- Tess Ferrandez可以帮助进行记忆捕捉分析李>
- 了解每个应用程序池中运行的web应用程序数量李>
- 调查使用“网络花园”可能有助于减少受“减速”影响的用户数量
- 是否启用了病毒扫描程序?它在运行吗?如果是,请核实排除情况
- 应用程序团队是否可以帮助解决问题?确定他们是否有任何可能有助于诊断问题的自定义应用程序检测
- 不好玩
许多根本原因都有共同的症状,这使得在不弄脏应用程序的情况下很难进行诊断。:)如果暗示了这些步骤,请原谅
接下来的一些步骤可能是:
Z我喜欢32位版本的Windows,而喜欢64位版本。虽然64位意味着代码可以比32位消耗更多的内存,但它也意味着机器在一个周期内可以完成32位操作系统两倍的工作量
autoConfig
maxIoThreads
maxWorkerThreads
minIoThreads
minWorkerThreads
requestQueueLimit
responseDeadlockInterval