我继承了一个我需要帮助的有点复杂的系统(和问题)。
我有一个带有以下规格的网络服务器:
该系统服务于大量用户,工作时间带宽相当稳定,达到~68,000kbit / s
有时候系统“关闭” - 网站变得很慢,会产生很多电话。事情通常会减慢60秒,但长度差异很大。有时只有几秒钟,有时甚至是3分钟或更长时间。
我的应用程序池设置为回收大约600mb的消耗内存。这不是确切的,但他们自己回收并取得了很大的成功。有时我会手动回收“主”池以清除我所描述的问题。
当事情进展缓慢时,这就是我所知道的。
与请求排队上升页面延迟相关联。 (我使用一个简单的ASP页面进行SQL调用,只是说“系统处于活动状态” - 监控此页面的延迟)
整体CPU使用率上升。
在我看来,这就是我想象中发生的事情。
有人要求系统生成报告或数据全局。这会占用一个消耗大量线程(即所有可用线程)的进程。这会导致系统的所有其他请求在ASP.NET队列中等待,这基本上会杀死站点。缺乏活动会导致网络流量下降。
我已经阅读了很多关于线程队列,线程池等的文章。这是一个很好的例子:http://williablog.net/williablog/post/2008/12/02/Increase-ASPNET-Scalability-Instantly.aspx并且做了我认为是帮助我解决问题的线索...但我不是当然。我正在使用的asp.net版本的“Machine.config”文件没有指定文章中列出的任何线程值,所以我们默认为我认为根据我们的情况不正确的所有内容。
如果你是我;接下来你会做什么?你认为问题在哪里?
编辑:这是截图。问题发生时应该很明显。 http://i.imgur.com/5BJlq.png
编辑:
我想为我们的设置更改这些值。首先提出几个问题:
1)进行更改后,需要重新启动才能使其生效?
2)这些设置如何查找具有8个物理内核的系统?
maxconnection = 96
maxIoThreads = 100
maxWorkerThreads = 100
minFreeThreads = 704
minLocalRequestFreeThreads = 608
答案 0 :(得分:2)
不好玩。
许多根本原因都有共同的症状,这使得很难在不弄脏应用程序的情况下进行诊断。如果隐含了其中一些步骤,请原谅。
接下来的一些步骤可能是:
行为是“新的”吗?还是一直在那里?如果是“新”,您是否可以追踪可能导致新行为的部署?
对于'减速'行为的描述是否可归因于apppool recycle并再次导致应用程序的jitting? ala - 第一个请求综合症。
查看日志有助于了解网站/应用程序的使用方式,如果您不拥有代码库,这一点尤为重要。 Logparser是进行IIS日志分析(以及其他格式)的绝佳工具。
祝你好运!ž
答案 1 :(得分:1)
您正在谈论的设置是来自machine.config的system.web
元素下的processModel元素的一部分。对于IIS6,以下适用:
autoConfig maxIoThreads maxWorkerThreads minIoThreads minWorkerThreads requestQueueLimit responseDeadlockInterval
通常,您只会找到autoConfig="true"
而不会找到其他元素。自动配置根据您的机器配置设置值 - 根据推荐值(参见this文章中的线程解释部分)完成调整,这与您链接所看到的相同提供了。
article虽然已过时,但如果您想手动调整这些设置,我会提供优秀的资源。
另一方面,在您正在服务的负载上,我会推荐两件事(如果您还没有尝试过)