System.Web.HttpException: 服务器太忙

Windows 2003 Enterprise Server自带IIS 6.0,上面有多个站点,其中一个是企业门户,访问量较大,由于门户需要连接很多数据库和WebService接口获取需要展示的数据,有时在这些数据源出现缓慢的时候,也会导致门户站点报告“System.Web.HttpException: 服务器太忙”错误。

从发生错误的情况判断应该是服务器的处理队列达到限制,因此抛出异常。

之前曾经调整过对应Framework版本的machine.config文件,主要涉及processModel节的maxWorkerThreadsmaxIoThreadsminWorkerThreads,情况有所好转,但是一直未能根除,感觉只是提升了WEB服务器自身的处理极限,但当外部数据源缓慢的时候,需要处理的事务依然会排长队,超出队列长度,进而报错。

最近看到篇介绍machine.config配置的文章:《ASP.NET 设置架构参考》,很详细,这才发现,原来已经距离答案很近,只是没留意,请注意学习processModel章节。

首先在machine.config中是可以配置整个WEB服务器的请求队列长度(processModelrequestQueueLimit,默认5000)和单个站点默认的请求队列长度(httpRuntimeappRequestQueueLimit,默认100);考虑到其他站点访问量没有这么大,并且整个WEB服务器的请求队列长度5000也应该足够,那我们需要的就是单独修改该站点的队列长度;鉴于httpRuntime节是可以在对应站点下的web.config中配置的,所以我们只需要改动这个站点的web.config即可,增加一行配置,指定队列长度为1000(未修改之前是对应Framework版本下的machine.config中httpRuntime节appRequestQueueLimit决定默认值的),问题有明显改善,今天在一度极端缓慢的情况下,也没有观察到服务器太忙的错误重现。

<system.web>
...
<httpRuntime appRequestQueueLimit="1000"/>
...
</system.web>


附:
1、怎么知道我的站点是用的哪个版本的Microsoft.NET Framework:IIS中对应站点鼠标右键>属性


2、machine.config文件在哪里:一般<WINDOWS安装目录>\Microsoft.NET\Framework\对应版本号\CONFIG\

3、网上看到另外一种说法是修改对应站点归属应用程序池的“请求队列限制”来解决相同问题,我之前单独修改试过,观察不到效果;不过我想可以双管齐下,现在也是这么做的;这个的默认值是4000


4、怎么知道某个站点用的哪个应用程序池:IIS中对应站点鼠标右键>属性

Windows XP IIS出错

今天突然发现Windows XP上安装的IIS出错了,访问asp.net的程序都出HTTP 404错误,检查日志发现以下错误:

1、服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '因为配置类型不正确,系统无法开始服务器进程。请检查用户名和密码。

2、Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止。


卸载IIS重新安装又提示:
“复制错误: 安装程序无法复制文件 staxmem.dll。 请插入 " Windows XP Professional Service Pack 2 CD "。 安装程序无法复制一个或多个文件。 特定错误代码是0x4b8”

按照http://support.microsoft.com/?kbid=894351知识库方法二处理之后,安装成功,但访问asp和asp.net的程序都出HTTP 404错误。采用“aspnet_regiis.exe /ua”和“aspnet_regiis.exe /i”重新安装IIS的.NET环境依然无效,最后按照以下顺序处理终于恢复:
1、“添加和删除程序”中卸载全部Microsoft .NET Framework;
2、“添加和删除程序->添加删除Windows组件”中删除Internet 信息服务(IIS)
3、重新安装IIS;
4、重新安装Microsoft .NET Framework v1.1及其SP1和安全补丁

期间曾经试过在没有删除IIS的情况下重新安装Microsoft .NET Framework,无效。

其他一些参考资料:
http://www.ymw.cn/it/CSDN/asppost5/web27115.htm
http://www.mmkey.com/show.asp?id=780