我有一个网络服务器w /以下规格:
>硬件:
> Server 2003 32位
> IIS 6
> 8芯(16瓦/超线程)
> 12GB RAM
> ASP.NET站点
> 3个应用程序池,因此运行3个w3wp.exe实例.
该系统服务于大量人员,并且在工作时间内带宽相当稳定,达到~68,000kbit / s
有时系统“关闭” – 网站变得非常慢,从而产生大量的电话.事情通常会减慢60秒,但长度差异很大.有时只有几秒钟,有时甚至是3分钟或更长时间.
我的应用程序池设置为回收大约600mb的消耗内存.这不是确切的,但他们自己回收并取得了很大的成功.有时我会手动回收“主”池以清除我所描述的问题.
当事情进展缓慢时,这就是我所知道的.
>网络带宽需要大幅下降.
>在ASP.NET性能计数器中排队的请求会增加.
>串联时,请求队列上升页面延迟增加. (我使用一个简单的ASP页面进行SQL调用,只是说“系统是实时的” – 监控此页面的延迟)
>整体CPU使用率上升.
> w3wp.exe的整体内存消耗量上升.
在我看来,这就是我想象中发生的事情.
有人要求系统生成报告或数据.这会占用一个消耗大量线程(即所有可用线程)的进程.这会导致系统的所有其他请求在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
解决方法
许多根本原因具有共同的症状,这使得在不弄脏应用程序的情况下难以诊断.如果隐含了其中一些步骤,请原谅.
接下来的一些步骤可能是:
>查看每个站点的IIS日志,查找以下内容:
> HTTP响应代码(5xx,4xx,3xx)
>请求响应时间
>查看Windows事件日志
>应用程序池多久循环一次?
>申请错误等
>验证@vinayc建议的processModel设置,以确保前任没有’棘手’
>安装DebugDiag,它是一个非常好的工具,可用于对内存和崩溃相关问题进行一些基本分析.
>这也可以帮助您捕获内存捕捉以便稍后进行诊断.
>苔丝Ferrandez blog可以帮助进行内存快照分析的头/尾.
>了解每个AppPool中运行的Web应用程序数量.
>调查使用“网络花园”可能有助于最大限度地减少受“减速”影响的用户数量
>是否启用了病毒扫描程序?它在运行吗?如果是,请验证排除.
>应用程序团队是否可以帮助排除故障?确定他们是否有任何可能有助于诊断问题的自定义应用程序工具.
这种行为是“新的”吗?还是一直在那里?如果是“新”,您是否可以追踪可能导致新行为的部署?
对“缓慢”行为的描述是否会归因于apppool循环并再次导致应用程序的jitting? ala – 第一个请求综合症.
查看日志有助于了解网站/应用程序的使用方式,如果您不拥有代码库,这一点尤为重要. Logparser是一个用于执行IIS日志分析(以及其他格式)的出色工具.
祝好运!
ž
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。